From 246fcd5198c0a53e27f309777a8ae23e98221753 Mon Sep 17 00:00:00 2001 From: Joel Holdsworth Date: Sat, 28 Jul 2007 12:32:01 +0000 Subject: Gtkmm-ified the desktop window object, and modified the file dialogs so that they are correctly parented (bzr r3328) --- src/desktop.cpp | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'src/desktop.cpp') 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) { -- cgit v1.2.3