[libgd/wip/rishi/main-box: 12/12] main icon box



commit 4527a7ac50d8f683081565a850a11386f59a82d1
Author: Debarshi Ray <debarshir gnome org>
Date:   Fri Dec 16 23:54:54 2016 +0100

    main icon box

 libgd/gd-main-icon-box.c |   37 +++++++++++++++----------------------
 1 files changed, 15 insertions(+), 22 deletions(-)
---
diff --git a/libgd/gd-main-icon-box.c b/libgd/gd-main-icon-box.c
index 06eeabe..8e29f0b 100644
--- a/libgd/gd-main-icon-box.c
+++ b/libgd/gd-main-icon-box.c
@@ -32,7 +32,6 @@ typedef struct _GdMainIconBoxPrivate GdMainIconBoxPrivate;
 struct _GdMainIconBoxPrivate
 {
   GListModel *model;
-  GdMainIconBoxChild *child_button_released;
   gboolean selection_changed;
   gboolean key_pressed;
   gboolean key_shift_pressed;
@@ -56,17 +55,6 @@ G_DEFINE_TYPE_WITH_CODE (GdMainIconBox, gd_main_icon_box, GTK_TYPE_FLOW_BOX,
                          G_IMPLEMENT_INTERFACE (GD_TYPE_MAIN_BOX_GENERIC, 
gd_main_box_generic_interface_init))
 
 static void
-gd_main_icon_box_child_button_released_cb (GdMainIconBoxChild *child, gpointer user_data)
-{
-  GdMainIconBox *self = GD_MAIN_ICON_BOX (user_data);
-  GdMainIconBoxPrivate *priv;
-
-  /* Workaround for lack of gtk_flow_box_get_child_at_pos. */
-  priv = gd_main_icon_box_get_instance_private (self);
-  priv->child_button_released = child;
-}
-
-static void
 gd_main_icon_box_update_last_selected_id (GdMainIconBox *self, GdMainBoxChild *child)
 {
   GdMainIconBoxPrivate *priv;
@@ -98,8 +86,6 @@ gd_main_icon_box_create_widget_func (gpointer item, gpointer user_data)
   child = gd_main_icon_box_child_new (GD_MAIN_BOX_ITEM (item), priv->selection_mode);
   gtk_widget_show_all (child);
 
-  g_signal_connect (child, "button-released", G_CALLBACK (gd_main_icon_box_child_button_released_cb), self);
-
   return child;
 }
 
@@ -320,20 +306,27 @@ gd_main_icon_box_button_release_event (GtkWidget *widget, GdkEventButton *event)
         }
       else if (event->button == 3)
         {
+          GtkFlowBoxChild *child;
+
           /* GtkFlowBox completely ignores the right mouse
            * button. Hence, all the right-click handling is done
            * here.
            */
 
-          gd_main_box_generic_toggle_selection_for_child (GD_MAIN_BOX_GENERIC (self),
-                                                          GD_MAIN_BOX_CHILD (priv->child_button_released),
-                                                          (!initiating && (event->state & GDK_SHIFT_MASK) != 
0));
-
-          if (priv->selection_changed)
+          child = gtk_flow_box_get_child_at_pos (GTK_FLOW_BOX (self), (gint) event->x, (gint) event->y);
+          if (child != NULL)
             {
-              g_signal_emit_by_name (self, "selection-changed");
-              gd_main_icon_box_update_last_selected_id (self, GD_MAIN_BOX_CHILD 
(priv->child_button_released));
-              priv->selection_changed = FALSE;
+              gd_main_box_generic_toggle_selection_for_child (GD_MAIN_BOX_GENERIC (self),
+                                                              GD_MAIN_BOX_CHILD (child),
+                                                              (!initiating &&
+                                                               (event->state & GDK_SHIFT_MASK) != 0));
+
+              if (priv->selection_changed)
+                {
+                  g_signal_emit_by_name (self, "selection-changed");
+                  gd_main_icon_box_update_last_selected_id (self, GD_MAIN_BOX_CHILD (child));
+                  priv->selection_changed = FALSE;
+                }
             }
         }
     }


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