GNOME Bugzilla – Bug 711298
"Edit Scheduled Transaction" window way too modal
Last modified: 2014-01-24 23:50:40 UTC
When using GnuCash 2.5.x (I have not tried recently with prior versions) on Mac OS X, the "Edit Scheduled Transaction" window created when editing a scheduled transaction is unable to be hidden behind any other windows. This applies whether command-tabbing out of the application, doing an expose gesture to switch to another app, clicking on another app to bring it into focus, etc. Workaround is to move the window to the bottom of the screen and continue to use other apps, otherwise it's in the way. I marked this as major as if this goes out as 2.6 it'll be really annoying. I might even call it a blocker (but didn't want to spam your bug tracker).
Don't you mean the "Since Last Run" window? The SX Editor is a special register tab. You can open it as a window if you want, but it isn't modal at all. The Since Last Run window does exhibit the behavior you describe.
The actual "Scheduled Transactions" list is a tab in the register section, but if I double-click a transaction that I have scheduled it opens a window, which exhibits the behaviour I indicated. I can reproduce this in 2.5.7.
It appears to be a gtk-quartz bug associated with dialogs created by GtkBuilder. It can be demonstrated in gtk-demo and gtk3-demo in the builder demo with the Help>About dialog.
Created attachment 263257 [details] [review] Assign dialog and utility-hinted windows to NSNormalWindowLevel This is due to dialogs and utility windows, as determined by GDK_WINDOW_TYPE_HINT_DIALOG and GDK_WINDOW_TYPE_HINT_UTILITY, being assigned to level NSFloatingWindow. The attached patch puts them in the same level as ordinary windows so that Gtk can manage their stacking. Note as well that gdk_window_set_keep_above() and gdk_window_set_keep_below() can promote or demote a GdkWindow to the next higher or lower NSWindow level than dictated by its GdkWindowTypeHint. We probably shouldn't be using NSWindow Levels at all, but if we must we should call setHidesOnDeactivate:True on every GdkWindow that is promoted out of NSNormalWindow so that it doesn't interfere with the user's other applications.
Comment on attachment 263257 [details] [review] Assign dialog and utility-hinted windows to NSNormalWindowLevel Pushed to master, gtk-3-10, and gtk-2-24.