[gimp] app: add gimp_handle_bar_connect_events()



commit 6280e4933af390431f10412337686a1a5282315d
Author: Michael Natterer <mitch gimp org>
Date:   Mon Jun 17 22:13:48 2013 +0200

    app: add gimp_handle_bar_connect_events()
    
    to replace 3 completely ugly signal connections, repeated in 4 places.

 app/tools/gimplevelstool.c     |   40 ++++++----------------------------------
 app/widgets/gimphandlebar.c    |   24 ++++++++++++++++++++++++
 app/widgets/gimphandlebar.h    |    3 +++
 app/widgets/gimphistogrambox.c |   13 ++-----------
 4 files changed, 35 insertions(+), 45 deletions(-)
---
diff --git a/app/tools/gimplevelstool.c b/app/tools/gimplevelstool.c
index c606deb..4786f57 100644
--- a/app/tools/gimplevelstool.c
+++ b/app/tools/gimplevelstool.c
@@ -414,29 +414,10 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
   gtk_box_pack_start (GTK_BOX (vbox3), handle_bar, FALSE, FALSE, 0);
   gtk_widget_show (handle_bar);
 
-  g_signal_connect_swapped (tool->input_bar, "button-press-event",
-                            G_CALLBACK (GTK_WIDGET_GET_CLASS (handle_bar)->button_press_event),
-                            handle_bar);
-
-  g_signal_connect_swapped (tool->input_bar, "button-release-event",
-                            G_CALLBACK (GTK_WIDGET_GET_CLASS (handle_bar)->button_release_event),
-                            handle_bar);
-
-  g_signal_connect_swapped (tool->input_bar, "motion-notify-event",
-                            G_CALLBACK (GTK_WIDGET_GET_CLASS (handle_bar)->motion_notify_event),
-                            handle_bar);
-
-  g_signal_connect_swapped (bar, "button-press-event",
-                            G_CALLBACK (GTK_WIDGET_GET_CLASS (handle_bar)->button_press_event),
-                            handle_bar);
-
-  g_signal_connect_swapped (bar, "button-release-event",
-                            G_CALLBACK (GTK_WIDGET_GET_CLASS (handle_bar)->button_release_event),
-                            handle_bar);
-
-  g_signal_connect_swapped (bar, "motion-notify-event",
-                            G_CALLBACK (GTK_WIDGET_GET_CLASS (handle_bar)->motion_notify_event),
-                            handle_bar);
+  gimp_handle_bar_connect_events (GIMP_HANDLE_BAR (handle_bar),
+                                  tool->input_bar);
+  gimp_handle_bar_connect_events (GIMP_HANDLE_BAR (handle_bar),
+                                  bar);
 
   /*  Horizontal box for input levels spinbuttons  */
   hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
@@ -529,17 +510,8 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
   gtk_box_pack_start (GTK_BOX (vbox2), handle_bar, FALSE, FALSE, 0);
   gtk_widget_show (handle_bar);
 
-  g_signal_connect_swapped (tool->output_bar, "button-press-event",
-                            G_CALLBACK (GTK_WIDGET_GET_CLASS (handle_bar)->button_press_event),
-                            handle_bar);
-
-  g_signal_connect_swapped (tool->output_bar, "button-release-event",
-                            G_CALLBACK (GTK_WIDGET_GET_CLASS (handle_bar)->button_release_event),
-                            handle_bar);
-
-  g_signal_connect_swapped (tool->output_bar, "motion-notify-event",
-                            G_CALLBACK (GTK_WIDGET_GET_CLASS (handle_bar)->motion_notify_event),
-                            handle_bar);
+  gimp_handle_bar_connect_events (GIMP_HANDLE_BAR (handle_bar),
+                                  tool->output_bar);
 
   /*  Horizontal box for levels spin widgets  */
   hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
diff --git a/app/widgets/gimphandlebar.c b/app/widgets/gimphandlebar.c
index 71ab9a9..8e1128b 100644
--- a/app/widgets/gimphandlebar.c
+++ b/app/widgets/gimphandlebar.c
@@ -350,6 +350,30 @@ gimp_handle_bar_set_adjustment (GimpHandleBar  *bar,
   gimp_handle_bar_adjustment_changed (bar->slider_adj[handle_no], bar);
 }
 
+void
+gimp_handle_bar_connect_events (GimpHandleBar *bar,
+                                GtkWidget     *event_source)
+{
+  GtkWidgetClass *widget_class;
+
+  g_return_if_fail (GIMP_IS_HANDLE_BAR (bar));
+  g_return_if_fail (GTK_IS_WIDGET (event_source));
+
+  widget_class = GTK_WIDGET_GET_CLASS (bar);
+
+  g_signal_connect_object (event_source, "button-press-event",
+                           G_CALLBACK (widget_class->button_press_event),
+                           bar, G_CONNECT_SWAPPED);
+
+  g_signal_connect_object (event_source, "button-release-event",
+                           G_CALLBACK (widget_class->button_release_event),
+                           bar, G_CONNECT_SWAPPED);
+
+  g_signal_connect_object (event_source, "motion-notify-event",
+                           G_CALLBACK (widget_class->motion_notify_event),
+                           bar, G_CONNECT_SWAPPED);
+}
+
 
 /*  private functions  */
 
diff --git a/app/widgets/gimphandlebar.h b/app/widgets/gimphandlebar.h
index 07c0b23..400ff7a 100644
--- a/app/widgets/gimphandlebar.h
+++ b/app/widgets/gimphandlebar.h
@@ -57,5 +57,8 @@ void        gimp_handle_bar_set_adjustment (GimpHandleBar  *bar,
                                             gint            handle_no,
                                             GtkAdjustment  *adjustment);
 
+void        gimp_handle_bar_connect_events (GimpHandleBar  *bar,
+                                            GtkWidget      *event_source);
+
 
 #endif  /*  __GIMP_HANDLE_BAR_H__  */
diff --git a/app/widgets/gimphistogrambox.c b/app/widgets/gimphistogrambox.c
index 1346e88..75c2d4c 100644
--- a/app/widgets/gimphistogrambox.c
+++ b/app/widgets/gimphistogrambox.c
@@ -133,17 +133,8 @@ gimp_histogram_box_init (GimpHistogramBox *box)
   gtk_box_pack_start (GTK_BOX (vbox2), bar, FALSE, FALSE, 0);
   gtk_widget_show (bar);
 
-  g_signal_connect_swapped (box->color_bar, "button-press-event",
-                            G_CALLBACK (GTK_WIDGET_GET_CLASS (box->slider_bar)->button_press_event),
-                            box->slider_bar);
-
-  g_signal_connect_swapped (box->color_bar, "button-release-event",
-                            G_CALLBACK (GTK_WIDGET_GET_CLASS (box->slider_bar)->button_release_event),
-                            box->slider_bar);
-
-  g_signal_connect_swapped (box->color_bar, "motion-notify-event",
-                            G_CALLBACK (GTK_WIDGET_GET_CLASS (box->slider_bar)->motion_notify_event),
-                            box->slider_bar);
+  gimp_handle_bar_connect_events (GIMP_HANDLE_BAR (box->slider_bar),
+                                  box->color_bar);
 
   /*  The range selection */
   hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);


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