[gimp] Bug 747224 - Too easy to accidentially close an image tab



commit 6f104ff2accb3248afd1bc2048a3b28a50298300
Author: Michael Natterer <mitch gimp org>
Date:   Fri Apr 3 20:28:57 2015 +0200

    Bug 747224 - Too easy to accidentially close an image tab
    
    Show the close button only on the active tab, so it's not
    accidentially hit when changing between images.

 app/display/gimpimagewindow.c |   43 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 42 insertions(+), 1 deletions(-)
---
diff --git a/app/display/gimpimagewindow.c b/app/display/gimpimagewindow.c
index 7783f5b..e0dae84 100644
--- a/app/display/gimpimagewindow.c
+++ b/app/display/gimpimagewindow.c
@@ -239,6 +239,7 @@ static void      gimp_image_window_shell_icon_notify   (GimpDisplayShell    *she
 static GtkWidget *
                  gimp_image_window_create_tab_label    (GimpImageWindow     *window,
                                                         GimpDisplayShell    *shell);
+static void      gimp_image_window_update_tab_labels   (GimpImageWindow     *window);
 
 
 G_DEFINE_TYPE_WITH_CODE (GimpImageWindow, gimp_image_window, GIMP_TYPE_WINDOW,
@@ -1637,7 +1638,7 @@ gimp_image_window_keep_canvas_pos (GimpImageWindow *window)
  * procedure instead.
  **/
 void
-gimp_image_window_update_tabs (GimpImageWindow  *window)
+gimp_image_window_update_tabs (GimpImageWindow *window)
 {
   GimpImageWindowPrivate *private;
   GimpGuiConfig          *config;
@@ -1677,9 +1678,11 @@ gimp_image_window_update_tabs (GimpImageWindow  *window)
       position = GTK_POS_TOP;
       break;
     }
+
   gtk_notebook_set_tab_pos (GTK_NOTEBOOK (private->notebook), position);
 }
 
+
 /*  private functions  */
 
 static void
@@ -1901,6 +1904,8 @@ gimp_image_window_switch_page (GtkNotebook     *notebook,
                             active_display);
 
   gimp_ui_manager_update (private->menubar_manager, active_display);
+
+  gimp_image_window_update_tab_labels (window);
 }
 
 static void
@@ -2241,5 +2246,41 @@ gimp_image_window_create_tab_label (GimpImageWindow  *window,
                             G_CALLBACK (gimp_image_window_shell_close_button_callback),
                             shell);
 
+  g_object_set_data (G_OBJECT (hbox), "close-button", button);
+
   return hbox;
 }
+
+static void
+gimp_image_window_update_tab_labels (GimpImageWindow *window)
+{
+  GimpImageWindowPrivate *private = GIMP_IMAGE_WINDOW_GET_PRIVATE (window);
+  GList                  *children;
+  GList                  *list;
+
+  children = gtk_container_get_children (GTK_CONTAINER (private->notebook));
+
+  for (list = children; list; list = g_list_next (list))
+    {
+      GtkWidget *shell = list->data;
+      GtkWidget *tab_widget;
+      GtkWidget *close_button;
+
+      tab_widget = gtk_notebook_get_tab_label (GTK_NOTEBOOK (private->notebook),
+                                               shell);
+
+      close_button = g_object_get_data (G_OBJECT (tab_widget), "close-button");
+
+      if (gimp_context_get_display (gimp_get_user_context (private->gimp)) ==
+          GIMP_DISPLAY_SHELL (shell)->display)
+        {
+          gtk_widget_show (close_button);
+        }
+      else
+        {
+          gtk_widget_hide (close_button);
+        }
+    }
+
+  g_list_free (children);
+}


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