[gimp] Change GimpImageWindow API to speak in shells, not displays



commit 35739c743c70c53ce9cf539e6e054056b70516fe
Author: Michael Natterer <mitch gimp org>
Date:   Mon Sep 28 22:53:31 2009 +0200

    Change GimpImageWindow API to speak in shells, not displays
    
    A widget container should keep around child widgets, not whatever
    objects that just have widgets.

 app/actions/actions.c                     |    8 +-
 app/display/gimpdisplay-handlers.c        |    4 +-
 app/display/gimpdisplay.c                 |    8 +-
 app/display/gimpdisplayshell-appearance.c |    8 +-
 app/display/gimpdisplayshell-handlers.c   |    2 +-
 app/display/gimpdisplayshell-progress.c   |    2 +-
 app/display/gimpdisplayshell-scale.c      |    4 +-
 app/display/gimpdisplayshell.c            |    2 +-
 app/display/gimpimagewindow.c             |  116 +++++++++++++---------------
 app/display/gimpimagewindow.h             |   28 ++++----
 10 files changed, 87 insertions(+), 95 deletions(-)
---
diff --git a/app/actions/actions.c b/app/actions/actions.c
index 80d5d21..bfc6764 100644
--- a/app/actions/actions.c
+++ b/app/actions/actions.c
@@ -264,7 +264,7 @@ action_data_get_gimp (gpointer data)
   if (GIMP_IS_DISPLAY (data))
     return ((GimpDisplay *) data)->gimp;
   else if (GIMP_IS_IMAGE_WINDOW (data))
-    return gimp_image_window_get_active_display (data)->gimp;
+    return gimp_image_window_get_active_shell (data)->display->gimp;
   else if (GIMP_IS_GIMP (data))
     return data;
   else if (GIMP_IS_DOCK (data))
@@ -293,7 +293,7 @@ action_data_get_context (gpointer data)
   if (GIMP_IS_DISPLAY (data))
     return gimp_get_user_context (((GimpDisplay *) data)->gimp);
   else if (GIMP_IS_IMAGE_WINDOW (data))
-    return gimp_get_user_context (gimp_image_window_get_active_display (data)->gimp);
+    return gimp_get_user_context (gimp_image_window_get_active_shell (data)->display->gimp);
   else if (GIMP_IS_GIMP (data))
     return gimp_get_user_context (data);
   else if (GIMP_IS_DOCK (data))
@@ -321,7 +321,7 @@ action_data_get_image (gpointer data)
   if (GIMP_IS_DISPLAY (data))
     return ((GimpDisplay *) data)->image;
   else if (GIMP_IS_IMAGE_WINDOW (data))
-    return gimp_image_window_get_active_display (data)->image;
+    return gimp_image_window_get_active_shell (data)->display->image;
   else if (GIMP_IS_GIMP (data))
     context = gimp_get_user_context (data);
   else if (GIMP_IS_DOCK (data))
@@ -350,7 +350,7 @@ action_data_get_display (gpointer data)
   if (GIMP_IS_DISPLAY (data))
     return data;
   else if (GIMP_IS_IMAGE_WINDOW (data))
-    return gimp_image_window_get_active_display (data);
+    return gimp_image_window_get_active_shell (data)->display;
   else if (GIMP_IS_GIMP (data))
     context = gimp_get_user_context (data);
   else if (GIMP_IS_DOCK (data))
diff --git a/app/display/gimpdisplay-handlers.c b/app/display/gimpdisplay-handlers.c
index ee6f576..8b3237d 100644
--- a/app/display/gimpdisplay-handlers.c
+++ b/app/display/gimpdisplay-handlers.c
@@ -166,7 +166,7 @@ gimp_display_saved_handler (GimpImage   *image,
   GtkWidget       *toplevel = gtk_widget_get_toplevel (display->shell);
   GimpImageWindow *window   = GIMP_IMAGE_WINDOW (toplevel);
 
-  if (gimp_image_window_get_active_display (window) == display)
+  if (gimp_image_window_get_active_shell (window)->display == display)
     {
       gchar *filename  = file_utils_uri_display_name (uri);
 
@@ -186,7 +186,7 @@ gimp_display_exported_handler (GimpImage   *image,
   GtkWidget       *toplevel = gtk_widget_get_toplevel (display->shell);
   GimpImageWindow *window   = GIMP_IMAGE_WINDOW (toplevel);
 
-  if (gimp_image_window_get_active_display (window) == display)
+  if (gimp_image_window_get_active_shell (window)->display == display)
     {
       gchar *filename  = file_utils_uri_display_name (uri);
 
diff --git a/app/display/gimpdisplay.c b/app/display/gimpdisplay.c
index 00f5fb7..fedde2d 100644
--- a/app/display/gimpdisplay.c
+++ b/app/display/gimpdisplay.c
@@ -386,12 +386,12 @@ gimp_display_new (Gimp              *gimp,
                                            display_factory);
 
   /* FIXME image window */
-  gimp_image_window_add_display (GIMP_IMAGE_WINDOW (display->shell),
-                                 display);
+  gimp_image_window_add_shell (GIMP_IMAGE_WINDOW (display->shell),
+                               GIMP_DISPLAY_SHELL (display->shell));
 
   /* FIXME image window */
-  gimp_image_window_set_active_display (GIMP_IMAGE_WINDOW (display->shell),
-                                        display);
+  gimp_image_window_set_active_shell (GIMP_IMAGE_WINDOW (display->shell),
+                                      GIMP_DISPLAY_SHELL (display->shell));
 
   /* FIXME image window */
   g_signal_connect (GIMP_IMAGE_WINDOW (display->shell)->statusbar, "cancel",
diff --git a/app/display/gimpdisplayshell-appearance.c b/app/display/gimpdisplayshell-appearance.c
index 76da1c1..a0e553e 100644
--- a/app/display/gimpdisplayshell-appearance.c
+++ b/app/display/gimpdisplayshell-appearance.c
@@ -117,7 +117,7 @@ gimp_display_shell_set_show_menubar (GimpDisplayShell *shell,
 
   g_object_set (options, "show-menubar", show, NULL);
 
-  if (gimp_image_window_get_active_display (window) == shell->display &&
+  if (gimp_image_window_get_active_shell (window) == shell &&
       window->menubar)
     {
       if (show)
@@ -153,7 +153,7 @@ gimp_display_shell_set_show_statusbar (GimpDisplayShell *shell,
 
   g_object_set (options, "show-statusbar", show, NULL);
 
-  if (gimp_image_window_get_active_display (window) == shell->display)
+  if (gimp_image_window_get_active_shell (window) == shell)
     {
       gimp_statusbar_set_visible (GIMP_STATUSBAR (window->statusbar), show);
     }
@@ -613,7 +613,7 @@ appearance_set_action_active (GimpDisplayShell *shell,
   GimpImageWindow *window   = GIMP_IMAGE_WINDOW (toplevel);
   GimpContext     *context;
 
-  if (gimp_image_window_get_active_display (window) == shell->display)
+  if (gimp_image_window_get_active_shell (window) == shell)
     {
       GimpActionGroup *action_group;
 
@@ -647,7 +647,7 @@ appearance_set_action_color (GimpDisplayShell *shell,
   GimpImageWindow *window   = GIMP_IMAGE_WINDOW (toplevel);
   GimpContext     *context;
 
-  if (gimp_image_window_get_active_display (window) == shell->display)
+  if (gimp_image_window_get_active_shell (window) == shell)
     {
       GimpActionGroup *action_group;
 
diff --git a/app/display/gimpdisplayshell-handlers.c b/app/display/gimpdisplayshell-handlers.c
index 926c371..a768452 100644
--- a/app/display/gimpdisplayshell-handlers.c
+++ b/app/display/gimpdisplayshell-handlers.c
@@ -503,7 +503,7 @@ gimp_display_shell_size_changed_detailed_handler (GimpImage        *image,
       GtkWidget       *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
       GimpImageWindow *window   = GIMP_IMAGE_WINDOW (toplevel);
 
-      if (gimp_image_window_get_active_display (window) == shell->display)
+      if (gimp_image_window_get_active_shell (window) == shell)
         {
           /* If the window is resized just center the image in it when it
            * has change size
diff --git a/app/display/gimpdisplayshell-progress.c b/app/display/gimpdisplayshell-progress.c
index e52ef3d..0c0ae5b 100644
--- a/app/display/gimpdisplayshell-progress.c
+++ b/app/display/gimpdisplayshell-progress.c
@@ -45,7 +45,7 @@ gimp_display_shell_progress_get_real_progress (GimpProgress *progress)
   GtkWidget        *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
   GimpImageWindow  *window   = GIMP_IMAGE_WINDOW (toplevel);
 
-  if (gimp_image_window_get_active_display (window) == shell->display)
+  if (gimp_image_window_get_active_shell (window) == shell)
     return GIMP_PROGRESS (window->statusbar);
   else
     return NULL;
diff --git a/app/display/gimpdisplayshell-scale.c b/app/display/gimpdisplayshell-scale.c
index 3dbe8d3..292acae 100644
--- a/app/display/gimpdisplayshell-scale.c
+++ b/app/display/gimpdisplayshell-scale.c
@@ -379,7 +379,7 @@ gimp_display_shell_scale (GimpDisplayShell *shell,
           gimp_zoom_model_zoom (shell->zoom, GIMP_ZOOM_TO, real_new_scale);
           gimp_display_shell_scaled (shell);
 
-          if (gimp_image_window_get_active_display (window) == shell->display)
+          if (gimp_image_window_get_active_shell (window) == shell)
             {
               gimp_image_window_shrink_wrap (window, FALSE);
             }
@@ -671,7 +671,7 @@ gimp_display_shell_scale_resize (GimpDisplayShell *shell,
       GtkWidget       *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
       GimpImageWindow *window   = GIMP_IMAGE_WINDOW (toplevel);
 
-      if (gimp_image_window_get_active_display (window) == shell->display)
+      if (gimp_image_window_get_active_shell (window) == shell)
         {
           gimp_image_window_shrink_wrap (window, grow_only);
         }
diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c
index b764b8d..208efb7 100644
--- a/app/display/gimpdisplayshell.c
+++ b/app/display/gimpdisplayshell.c
@@ -1605,7 +1605,7 @@ gimp_display_shell_flush (GimpDisplayShell *shell,
       GimpImageWindow *window   = GIMP_IMAGE_WINDOW (toplevel);
       GimpContext     *context;
 
-      if (gimp_image_window_get_active_display (window) == shell->display)
+      if (gimp_image_window_get_active_shell (window) == shell)
         {
           gimp_ui_manager_update (window->menubar_manager, shell->display);
         }
diff --git a/app/display/gimpimagewindow.c b/app/display/gimpimagewindow.c
index f60536e..1c17aad 100644
--- a/app/display/gimpimagewindow.c
+++ b/app/display/gimpimagewindow.c
@@ -315,11 +315,11 @@ static gboolean
 gimp_image_window_delete_event (GtkWidget   *widget,
                                 GdkEventAny *event)
 {
-  GimpImageWindow *window  = GIMP_IMAGE_WINDOW (widget);
-  GimpDisplay     *display = gimp_image_window_get_active_display (window);
+  GimpImageWindow  *window = GIMP_IMAGE_WINDOW (widget);
+  GimpDisplayShell *shell  = gimp_image_window_get_active_shell (window);
 
   /* FIXME multiple shells */
-  gimp_display_shell_close (GIMP_DISPLAY_SHELL (display->shell), FALSE);
+  gimp_display_shell_close (shell, FALSE);
 
   return TRUE;
 }
@@ -347,14 +347,10 @@ gimp_image_window_configure_event (GtkWidget         *widget,
       event->height != current_height)
     {
       /* FIXME multiple shells */
-      GimpDisplay *display = gimp_image_window_get_active_display (window);
+      GimpDisplayShell *shell = gimp_image_window_get_active_shell (window);
 
-      if (display->image)
-        {
-          GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (display->shell);
-
-          shell->size_allocate_from_configure_event = TRUE;
-        }
+      if (shell->display->image)
+        shell->size_allocate_from_configure_event = TRUE;
     }
 
   return TRUE;
@@ -364,8 +360,8 @@ static gboolean
 gimp_image_window_window_state_event (GtkWidget           *widget,
                                       GdkEventWindowState *event)
 {
-  GimpImageWindow *window  = GIMP_IMAGE_WINDOW (widget);
-  GimpDisplay     *display = gimp_image_window_get_active_display (window);
+  GimpImageWindow  *window = GIMP_IMAGE_WINDOW (widget);
+  GimpDisplayShell *shell  = gimp_image_window_get_active_shell (window);
 
   window->window_state = event->new_window_state;
 
@@ -385,7 +381,7 @@ gimp_image_window_window_state_event (GtkWidget           *widget,
       gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR (window->statusbar),
                                          ! fullscreen);
 
-      gimp_display_shell_appearance_update (GIMP_DISPLAY_SHELL (display->shell));
+      gimp_display_shell_appearance_update (shell);
     }
 
   if (event->changed_mask & GDK_WINDOW_STATE_ICONIFIED)
@@ -399,7 +395,7 @@ gimp_image_window_window_state_event (GtkWidget           *widget,
 
       if (iconified)
         {
-          if (gimp_displays_get_num_visible (display->gimp) == 0)
+          if (gimp_displays_get_num_visible (shell->display->gimp) == 0)
             {
               GIMP_LOG (WM, "No displays visible any longer");
 
@@ -413,8 +409,7 @@ gimp_image_window_window_state_event (GtkWidget           *widget,
 
       if (gimp_progress_is_active (GIMP_PROGRESS (window->statusbar)))
         {
-          GimpStatusbar    *statusbar = GIMP_STATUSBAR (window->statusbar);
-          GimpDisplayShell *shell     = GIMP_DISPLAY_SHELL (display->shell);
+          GimpStatusbar *statusbar = GIMP_STATUSBAR (window->statusbar);
 
           if (iconified)
             gimp_statusbar_override_window_title (statusbar);
@@ -457,7 +452,7 @@ gimp_image_window_style_set (GtkWidget *widget,
    *  set by gimp. All other displays should be placed by the window
    *  manager. See http://bugzilla.gnome.org/show_bug.cgi?id=559580
    */
-  if (! gimp_image_window_get_active_display (window)->image)
+  if (! gimp_image_window_get_active_shell (window)->display->image)
     geometry_mask |= GDK_HINT_USER_POS;
 
   gtk_window_set_geometry_hints (GTK_WINDOW (widget), NULL,
@@ -470,87 +465,88 @@ gimp_image_window_style_set (GtkWidget *widget,
 /*  public functions  */
 
 void
-gimp_image_window_add_display (GimpImageWindow *window,
-                               GimpDisplay     *display)
+gimp_image_window_add_shell (GimpImageWindow  *window,
+                             GimpDisplayShell *shell)
 {
   g_return_if_fail (GIMP_IS_IMAGE_WINDOW (window));
-  g_return_if_fail (GIMP_IS_DISPLAY (display));
-  g_return_if_fail (g_list_find (window->displays, display) == NULL);
+  g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
+  g_return_if_fail (g_list_find (window->shells, shell) == NULL);
 
   /* FIXME multiple shells */
-  g_assert (window->displays == NULL);
+  g_assert (window->shells == NULL);
 
-  window->displays = g_list_append (window->displays, display);
+  window->shells = g_list_append (window->shells, shell);
 
   /* FIXME multiple shells */
   gtk_box_pack_start (GTK_BOX (window->main_vbox),
-                      GIMP_DISPLAY_SHELL (display->shell)->disp_vbox,
+                      shell->disp_vbox,
                       TRUE, TRUE, 0);
-  gtk_widget_show (GIMP_DISPLAY_SHELL (display->shell)->disp_vbox);
+  gtk_widget_show (shell->disp_vbox);
 }
 
 void
-gimp_image_window_set_active_display (GimpImageWindow *window,
-                                      GimpDisplay     *display)
+gimp_image_window_set_active_shell (GimpImageWindow  *window,
+                                    GimpDisplayShell *shell)
 {
-  GimpDisplayShell *active_shell;
+  GimpDisplay *active_display;
 
   g_return_if_fail (GIMP_IS_IMAGE_WINDOW (window));
-  g_return_if_fail (GIMP_IS_DISPLAY (display));
+  g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
 
-  if (display == window->active_display)
+  if (shell == window->active_shell)
     return;
 
-  if (window->active_display)
+  if (window->active_shell)
     {
-      g_signal_handlers_disconnect_by_func (window->active_display,
+      active_display = window->active_shell->display;
+
+      g_signal_handlers_disconnect_by_func (active_display,
                                             gimp_image_window_image_notify,
                                             window);
 
-      active_shell = GIMP_DISPLAY_SHELL (window->active_display->shell);
-
-      g_signal_handlers_disconnect_by_func (active_shell,
+      g_signal_handlers_disconnect_by_func (window->active_shell,
                                             gimp_image_window_shell_scaled,
                                             window);
-      g_signal_handlers_disconnect_by_func (active_shell,
+      g_signal_handlers_disconnect_by_func (window->active_shell,
                                             gimp_image_window_shell_title_notify,
                                             window);
-      g_signal_handlers_disconnect_by_func (active_shell,
+      g_signal_handlers_disconnect_by_func (window->active_shell,
                                             gimp_image_window_shell_status_notify,
                                             window);
-      g_signal_handlers_disconnect_by_func (active_shell,
+      g_signal_handlers_disconnect_by_func (window->active_shell,
                                             gimp_image_window_shell_icon_notify,
                                             window);
     }
 
-  window->active_display = display;
+  window->active_shell = shell;
+
+  active_display = window->active_shell->display;
 
-  g_signal_connect (window->active_display, "notify::image",
+  g_signal_connect (active_display, "notify::image",
                     G_CALLBACK (gimp_image_window_image_notify),
                     window);
 
-  active_shell = GIMP_DISPLAY_SHELL (window->active_display->shell);
+  gimp_statusbar_set_shell (GIMP_STATUSBAR (window->statusbar),
+                            window->active_shell);
 
-  gimp_statusbar_set_shell (GIMP_STATUSBAR (window->statusbar), active_shell);
-
-  g_signal_connect (active_shell, "scaled",
+  g_signal_connect (window->active_shell, "scaled",
                     G_CALLBACK (gimp_image_window_shell_scaled),
                     window);
   /* FIXME: "title" later */
-  g_signal_connect (active_shell, "notify::gimp-title",
+  g_signal_connect (window->active_shell, "notify::gimp-title",
                     G_CALLBACK (gimp_image_window_shell_title_notify),
                     window);
-  g_signal_connect (active_shell, "notify::status",
+  g_signal_connect (window->active_shell, "notify::status",
                     G_CALLBACK (gimp_image_window_shell_status_notify),
                     window);
   /* FIXME: "icon" later */
-  g_signal_connect (active_shell, "notify::gimp-icon",
+  g_signal_connect (window->active_shell, "notify::gimp-icon",
                     G_CALLBACK (gimp_image_window_shell_icon_notify),
                     window);
 
-  gimp_display_shell_appearance_update (active_shell);
+  gimp_display_shell_appearance_update (window->active_shell);
 
-  if (! display->image)
+  if (! active_display->image)
     {
       gimp_statusbar_empty (GIMP_STATUSBAR (window->statusbar));
 
@@ -559,16 +555,15 @@ gimp_image_window_set_active_display (GimpImageWindow *window,
                                        GTK_WIDGET (window));
     }
 
-  gimp_ui_manager_update (window->menubar_manager,
-                          window->active_display);
+  gimp_ui_manager_update (window->menubar_manager, active_display);
 }
 
-GimpDisplay *
-gimp_image_window_get_active_display (GimpImageWindow *window)
+GimpDisplayShell *
+gimp_image_window_get_active_shell (GimpImageWindow *window)
 {
   g_return_val_if_fail (GIMP_IS_IMAGE_WINDOW (window), NULL);
 
-  return window->active_display;
+  return window->active_shell;
 }
 
 void
@@ -606,7 +601,6 @@ void
 gimp_image_window_shrink_wrap (GimpImageWindow *window,
                                gboolean         grow_only)
 {
-  GimpDisplay      *active_display;
   GimpDisplayShell *active_shell;
   GtkWidget        *widget;
   GdkScreen        *screen;
@@ -625,8 +619,7 @@ gimp_image_window_shrink_wrap (GimpImageWindow *window,
 
   /* FIXME this so needs cleanup and shell/window separation */
 
-  active_display = gimp_image_window_get_active_display (window);
-  active_shell   = GIMP_DISPLAY_SHELL (active_display->shell);
+  active_shell = gimp_image_window_get_active_shell (window);
 
   widget = GTK_WIDGET (window);
   screen = gtk_widget_get_screen (widget);
@@ -635,8 +628,8 @@ gimp_image_window_shrink_wrap (GimpImageWindow *window,
                                               gtk_widget_get_window (widget));
   gdk_screen_get_monitor_geometry (screen, monitor, &rect);
 
-  width  = SCALEX (active_shell, gimp_image_get_width  (active_display->image));
-  height = SCALEY (active_shell, gimp_image_get_height (active_display->image));
+  width  = SCALEX (active_shell, gimp_image_get_width  (active_shell->display->image));
+  height = SCALEY (active_shell, gimp_image_get_height (active_shell->display->image));
 
   disp_width  = active_shell->disp_width;
   disp_height = active_shell->disp_height;
@@ -744,10 +737,9 @@ gimp_image_window_shell_events (GtkWidget       *widget,
                                 GdkEvent        *event,
                                 GimpImageWindow *window)
 {
-  GimpDisplay *display = gimp_image_window_get_active_display (window);
+  GimpDisplayShell *shell = gimp_image_window_get_active_shell (window);
 
-  return gimp_display_shell_events (widget, event,
-                                    GIMP_DISPLAY_SHELL (display->shell));
+  return gimp_display_shell_events (widget, event, shell);
 }
 
 static void
diff --git a/app/display/gimpimagewindow.h b/app/display/gimpimagewindow.h
index 8bc7784..54f860a 100644
--- a/app/display/gimpimagewindow.h
+++ b/app/display/gimpimagewindow.h
@@ -36,8 +36,8 @@ struct _GimpImageWindow
 {
   GimpWindow         parent_instance;
 
-  GList             *displays;
-  GimpDisplay       *active_display;
+  GList             *shells;
+  GimpDisplayShell  *active_shell;
 
   GimpUIManager     *menubar_manager;
   GimpDialogFactory *display_factory;
@@ -55,23 +55,23 @@ struct _GimpImageWindowClass
 };
 
 
-GType         gimp_image_window_get_type           (void) G_GNUC_CONST;
+GType              gimp_image_window_get_type         (void) G_GNUC_CONST;
 
-void          gimp_image_window_add_display        (GimpImageWindow *window,
-                                                    GimpDisplay     *display);
+void               gimp_image_window_add_shell        (GimpImageWindow  *window,
+                                                       GimpDisplayShell *shell);
 
-void          gimp_image_window_set_active_display (GimpImageWindow *window,
-                                                    GimpDisplay     *display);
-GimpDisplay * gimp_image_window_get_active_display (GimpImageWindow *window);
+void               gimp_image_window_set_active_shell (GimpImageWindow  *window,
+                                                       GimpDisplayShell *shell);
+GimpDisplayShell * gimp_image_window_get_active_shell (GimpImageWindow  *window);
 
-void          gimp_image_window_set_fullscreen     (GimpImageWindow *window,
-                                                    gboolean         fullscreen);
-gboolean      gimp_image_window_get_fullscreen     (GimpImageWindow *window);
+void               gimp_image_window_set_fullscreen   (GimpImageWindow  *window,
+                                                       gboolean          fullscreen);
+gboolean           gimp_image_window_get_fullscreen   (GimpImageWindow  *window);
 
-gboolean      gimp_image_window_is_iconified       (GimpImageWindow *window);
+gboolean           gimp_image_window_is_iconified     (GimpImageWindow  *window);
 
-void          gimp_image_window_shrink_wrap        (GimpImageWindow *window,
-                                                    gboolean         grow_only);
+void               gimp_image_window_shrink_wrap      (GimpImageWindow  *window,
+                                                       gboolean          grow_only);
 
 
 #endif /* __GIMP_IMAGE_WINDOW_H__ */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]