[gimp] app: add gimp_handle_bar_connect_events()
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add gimp_handle_bar_connect_events()
- Date: Mon, 17 Jun 2013 20:15:26 +0000 (UTC)
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]