[gimp] app: add gimp_tool_gui_set_focus_on_map() and use it



commit 25cc5922b658586947ce0c599779b70f2908ec9d
Author: Michael Natterer <mitch gimp org>
Date:   Sat Jun 8 15:34:23 2013 +0200

    app: add gimp_tool_gui_set_focus_on_map() and use it

 app/display/gimptoolgui.c       |   35 +++++++++++++++++++++++++++++++++++
 app/display/gimptoolgui.h       |    4 ++++
 app/tools/gimpcolorpickertool.c |   12 +++---------
 app/tools/gimpmeasuretool.c     |   11 +++--------
 4 files changed, 45 insertions(+), 17 deletions(-)
---
diff --git a/app/display/gimptoolgui.c b/app/display/gimptoolgui.c
index 52d42cc..28e1aff 100644
--- a/app/display/gimptoolgui.c
+++ b/app/display/gimptoolgui.c
@@ -65,6 +65,7 @@ struct _GimpToolGuiPrivate
   gchar            *description;
   GList            *response_entries;
   gint              default_response;
+  gboolean          focus_on_map;
 
   gboolean          overlay;
 
@@ -133,6 +134,7 @@ gimp_tool_gui_init (GimpToolGui *gui)
   GimpToolGuiPrivate *private = GET_PRIVATE (gui);
 
   private->default_response = -1;
+  private->focus_on_map     = TRUE;
 
   private->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
   g_object_ref_sink (private->vbox);
@@ -434,6 +436,36 @@ gimp_tool_gui_get_overlay (GimpToolGui *gui)
 }
 
 void
+gimp_tool_gui_set_focus_on_map (GimpToolGui *gui,
+                                gboolean     focus_on_map)
+{
+  GimpToolGuiPrivate *private;
+
+  g_return_if_fail (GIMP_IS_TOOL_GUI (gui));
+
+  private = GET_PRIVATE (gui);
+
+  if (private->focus_on_map == focus_on_map)
+    return;
+
+  private->focus_on_map = focus_on_map ? TRUE : FALSE;
+
+  if (! private->overlay)
+    {
+      gtk_window_set_focus_on_map (GTK_WINDOW (private->dialog),
+                                   private->focus_on_map);
+    }
+}
+
+gboolean
+gimp_tool_gui_get_focus_on_map (GimpToolGui *gui)
+{
+  g_return_val_if_fail (GIMP_IS_TOOL_GUI (gui), FALSE);
+
+  return GET_PRIVATE (gui)->focus_on_map;
+}
+
+void
 gimp_tool_gui_set_default_response (GimpToolGui *gui,
                                     gint         response_id)
 {
@@ -589,6 +621,9 @@ gimp_tool_gui_create_dialog (GimpToolGui *gui)
         gtk_dialog_set_default_response (GTK_DIALOG (private->dialog),
                                          private->default_response);
 
+      gtk_window_set_focus_on_map (GTK_WINDOW (private->dialog),
+                                   private->focus_on_map);
+
       gtk_container_set_border_width (GTK_CONTAINER (private->vbox), 6);
       gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (private->dialog))),
                           private->vbox, TRUE, TRUE, 0);
diff --git a/app/display/gimptoolgui.h b/app/display/gimptoolgui.h
index 372eb40..b98eae2 100644
--- a/app/display/gimptoolgui.h
+++ b/app/display/gimptoolgui.h
@@ -75,6 +75,10 @@ void          gimp_tool_gui_set_overlay            (GimpToolGui      *gui,
                                                     gboolean          overlay);
 gboolean      gimp_tool_gui_get_overlay            (GimpToolGui      *gui);
 
+void          gimp_tool_gui_set_focus_on_map       (GimpToolGui      *gui,
+                                                    gboolean          focus_on_map);
+gboolean      gimp_tool_gui_get_focus_on_map       (GimpToolGui      *gui);
+
 void          gimp_tool_gui_set_default_response   (GimpToolGui      *gui,
                                                     gint              response_id);
 void          gimp_tool_gui_set_response_sensitive (GimpToolGui      *gui,
diff --git a/app/tools/gimpcolorpickertool.c b/app/tools/gimpcolorpickertool.c
index fe68851..debec15 100644
--- a/app/tools/gimpcolorpickertool.c
+++ b/app/tools/gimpcolorpickertool.c
@@ -301,8 +301,6 @@ static void
 gimp_color_picker_tool_info_create (GimpColorPickerTool *picker_tool)
 {
   GimpTool  *tool = GIMP_TOOL (picker_tool);
-  GtkWidget *dialog;
-  GtkWidget *vbox;
   GtkWidget *hbox;
   GtkWidget *frame;
   GimpRGB    color;
@@ -318,12 +316,7 @@ gimp_color_picker_tool_info_create (GimpColorPickerTool *picker_tool)
 
                                         NULL);
 
-  dialog = gimp_tool_gui_get_dialog (picker_tool->gui);
-  vbox   = gimp_tool_gui_get_vbox (picker_tool->gui);
-
-  if (GTK_IS_DIALOG (dialog))
-    gtk_window_set_focus_on_map (GTK_WINDOW (dialog), FALSE);
-
+  gimp_tool_gui_set_focus_on_map (picker_tool->gui, FALSE);
   gimp_tool_gui_set_viewable (picker_tool->gui,
                               GIMP_VIEWABLE (tool->drawable));
 
@@ -332,7 +325,8 @@ gimp_color_picker_tool_info_create (GimpColorPickerTool *picker_tool)
                     picker_tool);
 
   hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (gimp_tool_gui_get_vbox (picker_tool->gui)),
+                      hbox, FALSE, FALSE, 0);
   gtk_widget_show (hbox);
 
   picker_tool->color_frame1 = gimp_color_frame_new ();
diff --git a/app/tools/gimpmeasuretool.c b/app/tools/gimpmeasuretool.c
index bd24c36..6901352 100644
--- a/app/tools/gimpmeasuretool.c
+++ b/app/tools/gimpmeasuretool.c
@@ -1039,8 +1039,6 @@ gimp_measure_tool_dialog_new (GimpMeasureTool *measure)
 {
   GimpTool    *tool = GIMP_TOOL (measure);
   GimpToolGui *gui;
-  GtkWidget   *dialog;
-  GtkWidget   *vbox;
   GtkWidget   *table;
   GtkWidget   *label;
 
@@ -1052,11 +1050,7 @@ gimp_measure_tool_dialog_new (GimpMeasureTool *measure)
 
                            NULL);
 
-  dialog = gimp_tool_gui_get_dialog (gui);
-  vbox   = gimp_tool_gui_get_vbox (gui);
-
-  if (GTK_IS_DIALOG (dialog))
-    gtk_window_set_focus_on_map (GTK_WINDOW (dialog), FALSE);
+  gimp_tool_gui_set_focus_on_map (gui, FALSE);
 
   g_signal_connect (gui, "response",
                     G_CALLBACK (g_object_unref),
@@ -1065,7 +1059,8 @@ gimp_measure_tool_dialog_new (GimpMeasureTool *measure)
   table = gtk_table_new (4, 5, TRUE);
   gtk_table_set_col_spacings (GTK_TABLE (table), 6);
   gtk_table_set_row_spacings (GTK_TABLE (table), 6);
-  gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (gimp_tool_gui_get_vbox (gui)), table,
+                      TRUE, TRUE, 0);
   gtk_widget_show (table);
 
 


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