[gimp] libgimpwidgets: add GDestroyNotify to gimp_widget_track_monitor()



commit 1afb7a8b32eb00e15cb3fdb9fd6c966d1dc99a56
Author: Michael Natterer <mitch gimp org>
Date:   Wed Aug 7 23:44:18 2019 +0200

    libgimpwidgets: add GDestroyNotify to gimp_widget_track_monitor()

 app/widgets/gimpcontainertreeview.c |  2 +-
 app/widgets/gimpfgbgeditor.c        |  2 +-
 app/widgets/gimpfgbgview.c          |  2 +-
 app/widgets/gimpview.c              |  2 +-
 libgimpwidgets/gimpcolorarea.c      |  2 +-
 libgimpwidgets/gimpcolorscale.c     |  2 +-
 libgimpwidgets/gimppreviewarea.c    |  2 +-
 libgimpwidgets/gimpwidgetsutils.c   | 14 ++++++++++----
 libgimpwidgets/gimpwidgetsutils.h   |  3 ++-
 modules/color-selector-water.c      |  2 +-
 modules/gimpcolorwheel.c            |  2 +-
 11 files changed, 21 insertions(+), 14 deletions(-)
---
diff --git a/app/widgets/gimpcontainertreeview.c b/app/widgets/gimpcontainertreeview.c
index ca44847ec6..fd49e8538d 100644
--- a/app/widgets/gimpcontainertreeview.c
+++ b/app/widgets/gimpcontainertreeview.c
@@ -230,7 +230,7 @@ gimp_container_tree_view_init (GimpContainerTreeView *tree_view)
 
   gimp_widget_track_monitor (GTK_WIDGET (tree_view),
                              G_CALLBACK (gimp_container_tree_view_monitor_changed),
-                             NULL);
+                             NULL, NULL);
 }
 
 static void
diff --git a/app/widgets/gimpfgbgeditor.c b/app/widgets/gimpfgbgeditor.c
index ebf4d14f93..278d9e6add 100644
--- a/app/widgets/gimpfgbgeditor.c
+++ b/app/widgets/gimpfgbgeditor.c
@@ -195,7 +195,7 @@ gimp_fg_bg_editor_init (GimpFgBgEditor *editor)
 
   gimp_widget_track_monitor (GTK_WIDGET (editor),
                              G_CALLBACK (gimp_fg_bg_editor_destroy_transform),
-                             NULL);
+                             NULL, NULL);
 
   gtk_widget_set_size_request (GTK_WIDGET (editor), 32, 24);
 }
diff --git a/app/widgets/gimpfgbgview.c b/app/widgets/gimpfgbgview.c
index 845e2d26e6..fe0d0d6ea8 100644
--- a/app/widgets/gimpfgbgview.c
+++ b/app/widgets/gimpfgbgview.c
@@ -98,7 +98,7 @@ gimp_fg_bg_view_init (GimpFgBgView *view)
 
   gimp_widget_track_monitor (GTK_WIDGET (view),
                              G_CALLBACK (gimp_fg_bg_view_destroy_transform),
-                             NULL);
+                             NULL, NULL);
 }
 
 static void
diff --git a/app/widgets/gimpview.c b/app/widgets/gimpview.c
index 19c9b42720..57467a9d7a 100644
--- a/app/widgets/gimpview.c
+++ b/app/widgets/gimpview.c
@@ -190,7 +190,7 @@ gimp_view_init (GimpView *view)
 
   gimp_widget_track_monitor (GTK_WIDGET (view),
                              G_CALLBACK (gimp_view_monitor_changed),
-                             NULL);
+                             NULL, NULL);
 }
 
 static void
diff --git a/libgimpwidgets/gimpcolorarea.c b/libgimpwidgets/gimpcolorarea.c
index 7ee12c72b6..1f4b87ed37 100644
--- a/libgimpwidgets/gimpcolorarea.c
+++ b/libgimpwidgets/gimpcolorarea.c
@@ -258,7 +258,7 @@ gimp_color_area_init (GimpColorArea *area)
 
   gimp_widget_track_monitor (GTK_WIDGET (area),
                              G_CALLBACK (gimp_color_area_destroy_transform),
-                             NULL);
+                             NULL, NULL);
 }
 
 static void
diff --git a/libgimpwidgets/gimpcolorscale.c b/libgimpwidgets/gimpcolorscale.c
index 017508cdeb..67770e147b 100644
--- a/libgimpwidgets/gimpcolorscale.c
+++ b/libgimpwidgets/gimpcolorscale.c
@@ -183,7 +183,7 @@ gimp_color_scale_init (GimpColorScale *scale)
 
   gimp_widget_track_monitor (GTK_WIDGET (scale),
                              G_CALLBACK (gimp_color_scale_destroy_transform),
-                             NULL);
+                             NULL, NULL);
 
   css = gtk_css_provider_new ();
   gtk_css_provider_load_from_data (css,
diff --git a/libgimpwidgets/gimppreviewarea.c b/libgimpwidgets/gimppreviewarea.c
index 12419d9067..a2ef669de1 100644
--- a/libgimpwidgets/gimppreviewarea.c
+++ b/libgimpwidgets/gimppreviewarea.c
@@ -162,7 +162,7 @@ gimp_preview_area_init (GimpPreviewArea *area)
 
   gimp_widget_track_monitor (GTK_WIDGET (area),
                              G_CALLBACK (gimp_preview_area_destroy_transform),
-                             NULL);
+                             NULL, NULL);
 }
 
 static void
diff --git a/libgimpwidgets/gimpwidgetsutils.c b/libgimpwidgets/gimpwidgetsutils.c
index 3c262bca2d..3c0478f284 100644
--- a/libgimpwidgets/gimpwidgetsutils.c
+++ b/libgimpwidgets/gimpwidgetsutils.c
@@ -434,9 +434,10 @@ track_monitor_hierarchy_changed (GtkWidget        *widget,
  * Since: 2.10
  **/
 void
-gimp_widget_track_monitor (GtkWidget *widget,
-                           GCallback  monitor_changed_callback,
-                           gpointer   user_data)
+gimp_widget_track_monitor (GtkWidget      *widget,
+                           GCallback       monitor_changed_callback,
+                           gpointer        user_data,
+                           GDestroyNotify  user_data_destroy)
 {
   TrackMonitorData *track_data;
   GtkWidget        *toplevel;
@@ -450,7 +451,12 @@ gimp_widget_track_monitor (GtkWidget *widget,
   track_data->callback  = (MonitorChangedCallback) monitor_changed_callback;
   track_data->user_data = user_data;
 
-  g_object_weak_ref (G_OBJECT (widget), (GWeakNotify) g_free, track_data);
+  g_object_weak_ref (G_OBJECT (widget), (GWeakNotify) g_free,
+                     track_data);
+
+  if (user_data_destroy)
+    g_object_weak_ref (G_OBJECT (widget), (GWeakNotify) user_data_destroy,
+                       user_data);
 
   g_signal_connect (widget, "hierarchy-changed",
                     G_CALLBACK (track_monitor_hierarchy_changed),
diff --git a/libgimpwidgets/gimpwidgetsutils.h b/libgimpwidgets/gimpwidgetsutils.h
index 3a4b8c9ff2..d126d03ba2 100644
--- a/libgimpwidgets/gimpwidgetsutils.h
+++ b/libgimpwidgets/gimpwidgetsutils.h
@@ -47,7 +47,8 @@ GdkMonitor         * gimp_get_monitor_at_pointer     (void);
 
 void                 gimp_widget_track_monitor       (GtkWidget         *widget,
                                                       GCallback          monitor_changed_callback,
-                                                      gpointer           user_data);
+                                                      gpointer           user_data,
+                                                      GDestroyNotify     user_data_destroy);
 
 GimpColorProfile   * gimp_monitor_get_color_profile  (GdkMonitor        *monitor);
 GimpColorProfile   * gimp_widget_get_color_profile   (GtkWidget         *widget);
diff --git a/modules/color-selector-water.c b/modules/color-selector-water.c
index a5809cc5f4..dd62cde611 100644
--- a/modules/color-selector-water.c
+++ b/modules/color-selector-water.c
@@ -202,7 +202,7 @@ colorsel_water_init (ColorselWater *water)
 
   gimp_widget_track_monitor (GTK_WIDGET (water),
                              G_CALLBACK (colorsel_water_destroy_transform),
-                             NULL);
+                             NULL, NULL);
 }
 
 static gdouble
diff --git a/modules/gimpcolorwheel.c b/modules/gimpcolorwheel.c
index b11baea3d0..a7652376e3 100644
--- a/modules/gimpcolorwheel.c
+++ b/modules/gimpcolorwheel.c
@@ -242,7 +242,7 @@ gimp_color_wheel_init (GimpColorWheel *wheel)
 
   gimp_widget_track_monitor (GTK_WIDGET (wheel),
                              G_CALLBACK (gimp_color_wheel_destroy_transform),
-                             NULL);
+                             NULL, NULL);
 }
 
 static void


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