[glade] Added add-child-verify function to GtkScrolledWindow which is the only place we want to check if we



commit 3549eeac248e8f94abd19a0f2d43e02fec800742
Author: Juan Pablo Ugarte <juanpablougarte gmail com>
Date:   Wed Aug 7 11:32:41 2013 -0300

    Added add-child-verify function to GtkScrolledWindow which is the only place we want to check if we can 
add a child or not.
    Stop using glade_util_check_and_warn_scrollable() everywhere but in GtkScrolledWindow add-child-verify 
function.

 gladeui/glade-placeholder.c              |   22 +++++++++-------------
 gladeui/glade-popup.c                    |   10 +++-------
 gladeui/glade-project.c                  |    6 ------
 plugins/gtk+/glade-gtk-scrolled-window.c |   14 ++++++++++++++
 plugins/gtk+/glade-gtk-widget.c          |    6 ------
 plugins/gtk+/gtk+.xml.in                 |    1 +
 6 files changed, 27 insertions(+), 32 deletions(-)
---
diff --git a/gladeui/glade-placeholder.c b/gladeui/glade-placeholder.c
index f90e92a..8eca99d 100644
--- a/gladeui/glade-placeholder.c
+++ b/gladeui/glade-placeholder.c
@@ -433,19 +433,15 @@ glade_placeholder_button_press (GtkWidget *widget, GdkEventButton *event)
         {
           GladeWidget *parent = glade_placeholder_get_parent (placeholder);
 
-          if (!glade_util_check_and_warn_scrollable
-              (parent, adaptor, glade_app_get_window ()))
-            {
-              /* A widget type is selected in the palette.
-               * Add a new widget of that type.
-               */
-              glade_command_create (adaptor, parent, placeholder, project);
-
-             glade_project_set_add_item (project, NULL);
-
-              /* reset the cursor */
-              glade_cursor_set (project, event->window, GLADE_CURSOR_SELECTOR);
-            }
+          /* A widget type is selected in the palette.
+           * Add a new widget of that type.
+           */
+          glade_command_create (adaptor, parent, placeholder, project);
+
+          glade_project_set_add_item (project, NULL);
+
+          /* reset the cursor */
+          glade_cursor_set (project, event->window, GLADE_CURSOR_SELECTOR);
           handled = TRUE;
         }
     }
diff --git a/gladeui/glade-popup.c b/gladeui/glade-popup.c
index d2794cc..ff178c6 100644
--- a/gladeui/glade-popup.c
+++ b/gladeui/glade-popup.c
@@ -68,14 +68,10 @@ glade_popup_widget_add_cb (GtkMenuItem *item, RootAddData *data)
 {
   g_return_if_fail (data->adaptor != NULL);
 
-  if (!glade_util_check_and_warn_scrollable
-      (data->parent, data->adaptor, glade_app_get_window ()))
-    {
-      if (glade_command_create (data->adaptor, data->parent,
-                               data->placeholder, data->project))
+  if (glade_command_create (data->adaptor, data->parent,
+                            data->placeholder, data->project))
 
-      glade_project_set_add_item (data->project, NULL);
-    }
+    glade_project_set_add_item (data->project, NULL);
 }
 
 static void
diff --git a/gladeui/glade-project.c b/gladeui/glade-project.c
index 87a1699..31d8b72 100644
--- a/gladeui/glade-project.c
+++ b/gladeui/glade-project.c
@@ -4834,12 +4834,6 @@ glade_project_command_paste (GladeProject *project,
         }
     }
 
-  /* Abort operation when adding a non scrollable widget to any kind of GtkScrolledWindow. */
-  if (parent && widget &&
-      glade_util_check_and_warn_scrollable (parent, glade_widget_get_adaptor (widget),
-                                            glade_app_get_window ()))
-    return;
-
   /* Check if we have anything to paste */
   if (g_list_length (glade_clipboard_widgets (clipboard)) == 0)
     {
diff --git a/plugins/gtk+/glade-gtk-scrolled-window.c b/plugins/gtk+/glade-gtk-scrolled-window.c
index b915760..a4635e8 100644
--- a/plugins/gtk+/glade-gtk-scrolled-window.c
+++ b/plugins/gtk+/glade-gtk-scrolled-window.c
@@ -58,3 +58,17 @@ glade_gtk_scrolled_window_set_property (GladeWidgetAdaptor * adaptor,
   else if (GPC_VERSION_CHECK (glade_property_get_class (property), gtk_major_version, gtk_minor_version + 1))
     GWA_GET_CLASS (GTK_TYPE_CONTAINER)->set_property (adaptor, object, id, value);
 }
+
+gboolean
+glade_gtk_scrolled_window_add_child_verify (GladeWidgetAdaptor *adaptor,
+                                            GtkWidget          *container,
+                                            GtkWidget          *child,
+                                            gboolean            user_feedback)
+{
+  GladeWidget *gcontainer = glade_widget_get_from_gobject (container);
+  GladeWidget *gchild = glade_widget_get_from_gobject (child);
+
+  return !glade_util_check_and_warn_scrollable (gcontainer,
+                                                glade_widget_get_adaptor (gchild),
+                                                glade_app_get_window ());
+}
\ No newline at end of file
diff --git a/plugins/gtk+/glade-gtk-widget.c b/plugins/gtk+/glade-gtk-widget.c
index e094083..75b0a8f 100644
--- a/plugins/gtk+/glade-gtk-widget.c
+++ b/plugins/gtk+/glade-gtk-widget.c
@@ -869,12 +869,6 @@ glade_gtk_widget_action_activate (GladeWidgetAdaptor * adaptor,
          GladeWidget *gnew_parent;
           GladeProperty *property;
 
-          /* Dont add non-scrollable widgets to scrolled windows... */
-          if (gparent &&
-              glade_util_check_and_warn_scrollable (gparent, adaptor,
-                                                    glade_app_get_window ()))
-            return;
-
           glade_command_push_group (_("Adding parent %s for %s"),
                                     glade_widget_adaptor_get_title (adaptor), 
                                    glade_widget_get_name (gwidget));
diff --git a/plugins/gtk+/gtk+.xml.in b/plugins/gtk+/gtk+.xml.in
index fbf656f..5398bc6 100644
--- a/plugins/gtk+/gtk+.xml.in
+++ b/plugins/gtk+/gtk+.xml.in
@@ -2362,6 +2362,7 @@ range of values</_tooltip>
     <glade-widget-class name="GtkScrolledWindow" generic-name="scrolledwindow" _title="Scrolled Window">
       <create-editable-function>glade_gtk_scrolled_window_create_editable</create-editable-function>
       <set-property-function>glade_gtk_scrolled_window_set_property</set-property-function>
+      <add-child-verify-function>glade_gtk_scrolled_window_add_child_verify</add-child-verify-function>
       <properties>
         <property id="hadjustment" custom-layout="True"/>
         <property id="vadjustment" custom-layout="True"/>


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