diff options
Diffstat (limited to 'src/desktop.cpp')
| -rw-r--r-- | src/desktop.cpp | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp index 859e15bd8..4cfc279cc 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -1030,9 +1030,9 @@ SPDesktop::setWindowTransient (void *p, int transient_policy) _widget->setTransient (p, transient_policy); } -void SPDesktop::getToplevel( GtkWidget*& toplevel ) +void SPDesktop::getToplevel( Gtk::Widget*& toplevel ) { - toplevel = GTK_WIDGET( _widget->getWindow() ); + toplevel = (Gtk::Widget*)_widget->getWindow(); } void @@ -1077,6 +1077,35 @@ SPDesktop::shutdown() return _widget->shutdown(); } +bool SPDesktop::onDeleteUI (GdkEventAny*) +{ + if(shutdown()) return true; + destroyWidget(); + return false; +} + +/** + * onWindowStateEvent + * + * Called when the window changes its maximize/fullscreen/iconify/pinned state. + * Since GTK doesn't have a way to query this state information directly, we + * record it for the desktop here, and also possibly trigger a layout. + */ +bool +SPDesktop::onWindowStateEvent (GdkEventWindowState* event) +{ + // Record the desktop window's state + window_state = event->new_window_state; + + // Layout may differ depending on full-screen mode or not + GdkWindowState changed = event->changed_mask; + if (changed & (GDK_WINDOW_STATE_FULLSCREEN|GDK_WINDOW_STATE_MAXIMIZED)) { + layoutWidget(); + } + + return false; +} + void SPDesktop::setToolboxFocusTo (gchar const *label) { |
