From dc4161878bb9b0300f2a1eddeb3077befe7632e1 Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Sat, 31 Jul 2004 19:01:43 +0000 Subject: Disconnect from screen's size-changed on finalize too. 2004-07-31 Christian Persch * src/ephy-window.c: (update_exit_fullscreen_popup_position), (size_changed_cb), (ephy_window_destroy), (add_widget): Disconnect from screen's size-changed on finalize too. --- ChangeLog | 7 +++++++ src/ephy-window.c | 58 +++++++++++++++++++++++++++++-------------------------- 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index 397a921b6..a795fd7c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-07-31 Christian Persch + + * src/ephy-window.c: (update_exit_fullscreen_popup_position), + (size_changed_cb), (ephy_window_destroy), (add_widget): + + Disconnect from screen's size-changed on finalize too. + 2004-07-31 Christian Persch * embed/mozilla/EphyBrowser.cpp: diff --git a/src/ephy-window.c b/src/ephy-window.c index 3be64d27b..096e0ca75 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -390,6 +390,33 @@ ephy_window_get_type (void) return ephy_window_type; } +static void +update_exit_fullscreen_popup_position (EphyWindow *window) +{ + GdkRectangle screen_rect; + int popup_height; + + g_return_if_fail (window->priv->exit_fullscreen_popup != NULL); + + gtk_window_get_size (GTK_WINDOW (window->priv->exit_fullscreen_popup), + NULL, &popup_height); + + gdk_screen_get_monitor_geometry (gdk_screen_get_default (), + gdk_screen_get_monitor_at_window + (gdk_screen_get_default (), + GTK_WIDGET (window)->window), + &screen_rect); + + gtk_window_move (GTK_WINDOW (window->priv->exit_fullscreen_popup), + screen_rect.x, screen_rect.height - popup_height); +} + +static void +size_changed_cb (GdkScreen *screen, EphyWindow *window) +{ + update_exit_fullscreen_popup_position (window); +} + static void ephy_window_destroy (GtkObject *gtkobject) { @@ -410,6 +437,10 @@ ephy_window_destroy (GtkObject *gtkobject) if (window->priv->exit_fullscreen_popup) { + g_signal_handlers_disconnect_by_func + (gdk_screen_get_default (), + G_CALLBACK (size_changed_cb), window); + gtk_widget_destroy (window->priv->exit_fullscreen_popup); window->priv->exit_fullscreen_popup = NULL; } @@ -424,33 +455,6 @@ add_widget (GtkUIManager *merge, GtkWidget *widget, EphyWindow *window) widget, FALSE, FALSE, 0); } -static void -update_exit_fullscreen_popup_position (EphyWindow *window) -{ - GdkRectangle screen_rect; - int popup_height; - - g_return_if_fail (window->priv->exit_fullscreen_popup != NULL); - - gtk_window_get_size (GTK_WINDOW (window->priv->exit_fullscreen_popup), - NULL, &popup_height); - - gdk_screen_get_monitor_geometry (gdk_screen_get_default (), - gdk_screen_get_monitor_at_window - (gdk_screen_get_default (), - GTK_WIDGET (window)->window), - &screen_rect); - - gtk_window_move (GTK_WINDOW (window->priv->exit_fullscreen_popup), - screen_rect.x, screen_rect.height - popup_height); -} - -static void -size_changed_cb (GdkScreen *screen, EphyWindow *window) -{ - update_exit_fullscreen_popup_position (window); -} - static void exit_fullscreen_button_clicked_cb (GtkWidget *button, EphyWindow *window) { -- cgit v1.2.3