[gnome-panel/wip/muktupavels/remove-drag-source: 5/7] action-button: remove drag source



commit 69bd47990314f716a6221e7f3ed54a28c5b44338
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Sun Apr 12 22:45:45 2020 +0300

    action-button: remove drag source
    
    There is no reason why action buttons needs to be draggable.

 gnome-panel/applet.c              |  21 --------
 gnome-panel/panel-action-button.c | 109 +++-----------------------------------
 gnome-panel/panel-action-button.h |   8 +--
 gnome-panel/panel-util.c          |  18 -------
 gnome-panel/panel-util.h          |   2 -
 gnome-panel/panel.c               |  25 ++-------
 6 files changed, 14 insertions(+), 169 deletions(-)
---
diff --git a/gnome-panel/applet.c b/gnome-panel/applet.c
index fa4698dc8..ece1599e9 100644
--- a/gnome-panel/applet.c
+++ b/gnome-panel/applet.c
@@ -44,25 +44,6 @@ panel_applet_get_panel_widget (AppletInfo *info)
        return PANEL_WIDGET (gtk_widget_get_parent (info->widget));
 }
 
-static void
-panel_applet_set_dnd_enabled (AppletInfo *info,
-                             gboolean    dnd_enabled)
-{
-       switch (info->type) {
-       case PANEL_OBJECT_LAUNCHER:
-               break;
-       case PANEL_OBJECT_APPLET:
-               break;
-       case PANEL_OBJECT_ACTION:
-               panel_action_button_set_dnd_enabled (PANEL_ACTION_BUTTON (info->widget),
-                                                    dnd_enabled);
-               break;
-       default:
-               g_assert_not_reached ();
-               break;
-       }
-}
-
 static void
 move_applet_callback (GtkWidget *widget, AppletInfo *info)
 {
@@ -829,8 +810,6 @@ panel_applet_register (GtkWidget       *applet,
                          G_CALLBACK (panel_applet_destroy),
                          info);
 
-       panel_applet_set_dnd_enabled (info, TRUE);
-
        gtk_widget_show (applet);
 
        orientation_change (info, panel);
diff --git a/gnome-panel/panel-action-button.c b/gnome-panel/panel-action-button.c
index bdda91b81..4f8e35c2e 100644
--- a/gnome-panel/panel-action-button.c
+++ b/gnome-panel/panel-action-button.c
@@ -50,15 +50,12 @@
 
 enum {
        PROP_0,
-       PROP_ACTION_TYPE,
-       PROP_DND_ENABLED
+       PROP_ACTION_TYPE
 };
 
 struct _PanelActionButtonPrivate {
        PanelActionButtonType  type;
        AppletInfo            *info;
-
-       guint                  dnd_enabled : 1;
 };
 
 G_DEFINE_TYPE_WITH_PRIVATE (PanelActionButton, panel_action_button, BUTTON_TYPE_WIDGET)
@@ -513,9 +510,6 @@ panel_action_button_get_property (GObject    *object,
        case PROP_ACTION_TYPE:
                g_value_set_enum (value, button->priv->type);
                break;
-       case PROP_DND_ENABLED:
-               g_value_set_boolean (value, button->priv->dnd_enabled);
-               break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                break;
@@ -539,41 +533,12 @@ panel_action_button_set_property (GObject      *object,
                panel_action_button_set_type (button,
                                              g_value_get_enum (value));
                break;
-       case PROP_DND_ENABLED:
-               panel_action_button_set_dnd_enabled (button,
-                                                    g_value_get_boolean (value));
-               break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                break;
        }
 }
 
-static void
-panel_action_button_drag_data_get (GtkWidget          *widget,
-                                  GdkDragContext     *context,
-                                  GtkSelectionData   *selection_data,
-                                  guint               info,
-                                  guint               time)
-{
-       PanelActionButton *button;
-       char              *drag_data;
-
-       g_return_if_fail (PANEL_IS_ACTION_BUTTON (widget));
-
-       button = PANEL_ACTION_BUTTON (widget);
-
-       drag_data = g_strdup_printf ("ACTION:%s:%d", 
-                                    panel_enum_to_string (button->priv->type),
-                                    panel_find_applet_index (widget));
-
-       gtk_selection_data_set (
-               selection_data, gtk_selection_data_get_target (selection_data),
-               8, (guchar *) drag_data, strlen (drag_data));
-
-       g_free (drag_data);
-}
-
 static void
 panel_action_button_clicked (GtkButton *gtk_button)
 {
@@ -594,15 +559,12 @@ static void
 panel_action_button_class_init (PanelActionButtonClass *klass)
 {
        GObjectClass   *gobject_class = (GObjectClass *) klass;
-       GtkWidgetClass *widget_class  = (GtkWidgetClass *) klass;
        GtkButtonClass *button_class  = (GtkButtonClass *) klass;
 
        gobject_class->finalize     = panel_action_button_finalize;
        gobject_class->get_property = panel_action_button_get_property;
        gobject_class->set_property = panel_action_button_set_property;
 
-       widget_class->drag_data_get = panel_action_button_drag_data_get;
-
        button_class->clicked       = panel_action_button_clicked;
 
        g_object_class_install_property (
@@ -614,15 +576,6 @@ panel_action_button_class_init (PanelActionButtonClass *klass)
                                           PANEL_TYPE_ACTION_BUTTON_TYPE,
                                           PANEL_ORIENTATION_TOP,
                                           G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-
-       g_object_class_install_property (
-                       gobject_class,
-                       PROP_DND_ENABLED,
-                       g_param_spec_boolean ("dnd-enabled",
-                                             "Drag and drop enabled",
-                                             "Whether or not drag and drop is enabled on the widget",
-                                             TRUE,
-                                             G_PARAM_READWRITE));
 }
 
 static void
@@ -632,8 +585,6 @@ panel_action_button_init (PanelActionButton *button)
 
        button->priv->type = PANEL_ACTION_NONE;
        button->priv->info = NULL;
-
-       button->priv->dnd_enabled  = FALSE;
 }
 
 void
@@ -753,19 +704,17 @@ panel_action_button_invoke_menu (PanelActionButton *button,
                actions [button->priv->type].invoke_menu (button, callback_name);
 }
 
-gboolean
+void
 panel_action_button_load_from_drag (PanelToplevel       *toplevel,
                                    PanelObjectPackType  pack_type,
                                    int                  pack_index,
-                                   const char          *drag_string,
-                                   int                 *old_applet_idx)
+                                   const char          *drag_string)
 {
        PanelActionButtonType   type = PANEL_ACTION_NONE;
-       gboolean                retval = FALSE;
        char                  **elements;
 
        if (strncmp (drag_string, "ACTION:", strlen ("ACTION:")))
-               return retval;
+               return;
 
        elements = g_strsplit (drag_string, ":", 0);
 
@@ -773,59 +722,17 @@ panel_action_button_load_from_drag (PanelToplevel       *toplevel,
 
        if (!elements [1] || !elements [2]) {
                g_strfreev (elements);
-               return retval;
+               return;
        }
 
        if (!panel_string_to_enum (elements [1], (gpointer) &type)) {
                g_strfreev (elements);
-               return retval;
-       }
-
-       g_return_val_if_fail (type > PANEL_ACTION_NONE && type < PANEL_ACTION_LAST, FALSE);
-
-       if (strcmp (elements [2], "NEW")) {
-               *old_applet_idx = strtol (elements [2], NULL, 10);
-               retval = TRUE; /* Remove the old applet */
+               return;
        }
 
        g_strfreev (elements);
 
-       panel_action_button_create (toplevel, pack_type, pack_index, type);
-
-       return retval;
-}
-
-void
-panel_action_button_set_dnd_enabled (PanelActionButton *button,
-                                    gboolean           enabled)
-{
-       g_return_if_fail (PANEL_IS_ACTION_BUTTON (button));
-
-       if (!button->priv->type)
-               return; /* wait until we know what type it is */
-
-       enabled = enabled != FALSE;
-
-       if (button->priv->dnd_enabled == enabled)
-               return;
+       g_return_if_fail (type > PANEL_ACTION_NONE && type < PANEL_ACTION_LAST);
 
-       if (enabled) {
-               static GtkTargetEntry dnd_targets [] = {
-                       { (gchar *) "application/x-panel-applet-internal", 0, 0 }
-               };
-
-               gtk_widget_set_has_window (GTK_WIDGET (button), TRUE);
-               gtk_drag_source_set (GTK_WIDGET (button), GDK_BUTTON1_MASK,
-                                    dnd_targets, 1,
-                                    GDK_ACTION_COPY | GDK_ACTION_MOVE);
-               if (actions [button->priv->type].icon_name != NULL)
-                       gtk_drag_source_set_icon_name (GTK_WIDGET (button),
-                                                      actions [button->priv->type].icon_name);
-               gtk_widget_set_has_window (GTK_WIDGET (button), FALSE);
-       } else
-               gtk_drag_source_unset (GTK_WIDGET (button));
-
-       button->priv->dnd_enabled = enabled;
-
-       g_object_notify (G_OBJECT (button), "dnd-enabled");
+       panel_action_button_create (toplevel, pack_type, pack_index, type);
 }
diff --git a/gnome-panel/panel-action-button.h b/gnome-panel/panel-action-button.h
index 187a03da4..902cf6e3e 100644
--- a/gnome-panel/panel-action-button.h
+++ b/gnome-panel/panel-action-button.h
@@ -70,14 +70,10 @@ void       panel_action_button_load             (PanelWidget            *panel,
 void       panel_action_button_invoke_menu      (PanelActionButton      *button,
                                                 const char             *callback_name);
 
-void       panel_action_button_set_dnd_enabled  (PanelActionButton      *button,
-                                                gboolean                dnd_enabled);
-
-gboolean   panel_action_button_load_from_drag   (PanelToplevel          *toplevel,
+void       panel_action_button_load_from_drag   (PanelToplevel          *toplevel,
                                                 PanelObjectPackType     pack_type,
                                                 int                     pack_index,
-                                                const char             *drag_string,
-                                                int                    *old_applet_idx);
+                                                const char             *drag_string);
 
 gboolean             panel_action_get_is_disabled (PanelActionButtonType type);
 GCallback            panel_action_get_invoke      (PanelActionButtonType type);
diff --git a/gnome-panel/panel-util.c b/gnome-panel/panel-util.c
index 163436773..36c54e6c2 100644
--- a/gnome-panel/panel-util.c
+++ b/gnome-panel/panel-util.c
@@ -71,24 +71,6 @@ panel_util_make_exec_uri_for_desktop (const char *exec)
        return g_string_free (str, FALSE);
 }
 
-int
-panel_find_applet_index (GtkWidget *widget)
-{
-       GSList *applet_list, *l;
-       int     i;
-
-       applet_list = panel_applet_list_applets ();
-
-       for (i = 0, l = applet_list; l; i++, l = l->next) {
-               AppletInfo *info = l->data;
-
-               if (info->widget == widget)
-                       return i;
-       }
-
-       return i;
-}
-
 void
 panel_push_window_busy (GtkWidget *window)
 {
diff --git a/gnome-panel/panel-util.h b/gnome-panel/panel-util.h
index 3123b3fda..30a10c0f6 100644
--- a/gnome-panel/panel-util.h
+++ b/gnome-panel/panel-util.h
@@ -10,8 +10,6 @@ G_BEGIN_DECLS
 
 char *          panel_util_make_exec_uri_for_desktop (const char *exec);
 
-int            panel_find_applet_index (GtkWidget *widget);
-
 void           panel_push_window_busy  (GtkWidget *window);
 void           panel_pop_window_busy   (GtkWidget *window);
 
diff --git a/gnome-panel/panel.c b/gnome-panel/panel.c
index 2d04b3906..b770b54bf 100644
--- a/gnome-panel/panel.c
+++ b/gnome-panel/panel.c
@@ -690,8 +690,6 @@ drop_internal_applet (PanelWidget         *panel,
                      const char          *applet_type,
                      int                  action)
 {
-       int applet_index = -1;
-       gboolean remove_applet = FALSE;
        gboolean success = FALSE;
 
        if (applet_type == NULL)
@@ -699,16 +697,14 @@ drop_internal_applet (PanelWidget         *panel,
 
        if (!strncmp (applet_type, "ACTION:", strlen ("ACTION:"))) {
                if (panel_layout_is_writable ()) {
-                       remove_applet = panel_action_button_load_from_drag (
-                                                       panel->toplevel,
-                                                       pack_type, pack_index,
-                                                       applet_type,
-                                                       &applet_index);
+                       panel_action_button_load_from_drag (panel->toplevel,
+                                                           pack_type,
+                                                           pack_index,
+                                                           applet_type);
                        success = TRUE;
                } else {
                        success = FALSE;
                }
-
        } else if (!strcmp(applet_type,"LAUNCHER:ASK")) {
                if (panel_layout_is_writable ()) {
                        ask_about_launcher (NULL, panel, pack_type);
@@ -718,19 +714,6 @@ drop_internal_applet (PanelWidget         *panel,
                }
        }
 
-       if (remove_applet &&
-           action == GDK_ACTION_MOVE) {
-               AppletInfo *info;
-               GSList     *applet_list;
-
-               applet_list = panel_applet_list_applets ();
-
-               info = g_slist_nth_data (applet_list, applet_index);
-
-               if (info)
-                       panel_layout_delete_object (panel_applet_get_id (info));
-       }
-
        return success;
 }
 


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