diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | src/ephy-window.c | 58 |
2 files changed, 38 insertions, 27 deletions
@@ -1,5 +1,12 @@ 2004-07-31 Christian Persch <chpe@cvs.gnome.org> + * 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 <chpe@cvs.gnome.org> + * embed/mozilla/EphyBrowser.cpp: Use nsIDOMWindow2 to get the event target for mozilla >= 1.7rc3. 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 @@ -391,6 +391,33 @@ ephy_window_get_type (void) } 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) { EphyWindow *window = EPHY_WINDOW (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; } @@ -425,33 +456,6 @@ add_widget (GtkUIManager *merge, GtkWidget *widget, EphyWindow *window) } 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) { gtk_window_unfullscreen (GTK_WINDOW (window)); |