[gtk+/wip/carlosg/private-event-structs: 18/41] iconview: Update to using GdkEvent API



commit b5aa6b602853d7b68b3bb28ecdb8c88aed5d7f0d
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Aug 25 16:48:09 2017 +0200

    iconview: Update to using GdkEvent API

 gtk/gtkiconview.c |   74 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 49 insertions(+), 25 deletions(-)
---
diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c
index c7ae2a3..21f49af 100644
--- a/gtk/gtkiconview.c
+++ b/gtk/gtkiconview.c
@@ -1808,7 +1808,7 @@ gtk_icon_view_motion (GtkWidget      *widget,
       int width, height;
       gtk_icon_view_update_rubberband (icon_view);
       
-      abs_y = event->y - icon_view->priv->height *
+      abs_y = icon_view->priv->mouse_y - icon_view->priv->height *
        (gtk_adjustment_get_value (icon_view->priv->vadjustment) /
         (gtk_adjustment_get_upper (icon_view->priv->vadjustment) -
          gtk_adjustment_get_lower (icon_view->priv->vadjustment)));
@@ -1822,8 +1822,8 @@ gtk_icon_view_motion (GtkWidget      *widget,
          else
            icon_view->priv->scroll_value_diff = abs_y - height;
 
-         icon_view->priv->event_last_x = event->x;
-         icon_view->priv->event_last_y = event->y;
+         icon_view->priv->event_last_x = icon_view->priv->mouse_x;
+         icon_view->priv->event_last_y = icon_view->priv->mouse_x;
 
          if (icon_view->priv->scroll_timeout_id == 0) {
            icon_view->priv->scroll_timeout_id = gdk_threads_add_timeout (30, rubberband_scroll_timeout, 
@@ -1841,7 +1841,8 @@ gtk_icon_view_motion (GtkWidget      *widget,
 
       last_prelight_item = icon_view->priv->last_prelight;
       item = _gtk_icon_view_get_item_at_widget_coords (icon_view,
-                                                       event->x, event->y,
+                                                       icon_view->priv->mouse_x,
+                                                       icon_view->priv->mouse_y,
                                                        FALSE,
                                                        &cell);
 
@@ -2103,13 +2104,21 @@ gtk_icon_view_button_press (GtkWidget      *widget,
   GtkIconViewItem *item;
   gboolean dirty = FALSE;
   GtkCellRenderer *cell = NULL, *cursor_cell = NULL;
+  guint button, state;
+  gdouble x, y;
 
   icon_view = GTK_ICON_VIEW (widget);
 
+  if (!gdk_event_get_button ((GdkEvent *) event, &button) ||
+      !gdk_event_get_state ((GdkEvent *) event, &state) ||
+      !gdk_event_get_coords ((GdkEvent *) event, &x, &y))
+    return GDK_EVENT_PROPAGATE;
+
   if (!gtk_widget_has_focus (widget))
     gtk_widget_grab_focus (widget);
 
-  if (event->button == GDK_BUTTON_PRIMARY && event->type == GDK_BUTTON_PRESS)
+  if (button == GDK_BUTTON_PRIMARY &&
+      gdk_event_get_event_type ((GdkEvent *) event) == GDK_BUTTON_PRESS)
     {
       GdkModifierType extend_mod_mask;
       GdkModifierType modify_mod_mask;
@@ -2121,7 +2130,7 @@ gtk_icon_view_button_press (GtkWidget      *widget,
         gtk_widget_get_modifier_mask (widget, GDK_MODIFIER_INTENT_MODIFY_SELECTION);
 
       item = _gtk_icon_view_get_item_at_widget_coords (icon_view,
-                                                       event->x, event->y,
+                                                       x, y,
                                                        FALSE,
                                                        &cell);
 
@@ -2145,7 +2154,7 @@ gtk_icon_view_button_press (GtkWidget      *widget,
              _gtk_icon_view_set_cursor_item (icon_view, item, cursor_cell);
            }
          else if (icon_view->priv->selection_mode == GTK_SELECTION_MULTIPLE &&
-                  (event->state & extend_mod_mask))
+                  (state & extend_mod_mask))
            {
              gtk_icon_view_unselect_all_internal (icon_view);
 
@@ -2162,7 +2171,7 @@ gtk_icon_view_button_press (GtkWidget      *widget,
            {
              if ((icon_view->priv->selection_mode == GTK_SELECTION_MULTIPLE ||
                  ((icon_view->priv->selection_mode == GTK_SELECTION_SINGLE) && item->selected)) &&
-                 (event->state & modify_mod_mask))
+                 (state & modify_mod_mask))
                {
                  item->selected = !item->selected;
                  gtk_icon_view_queue_draw_item (icon_view, item);
@@ -2183,9 +2192,9 @@ gtk_icon_view_button_press (GtkWidget      *widget,
          /* Save press to possibly begin a drag */
          if (icon_view->priv->pressed_button < 0)
            {
-             icon_view->priv->pressed_button = event->button;
-             icon_view->priv->press_start_x = event->x;
-             icon_view->priv->press_start_y = event->y;
+             icon_view->priv->pressed_button = button;
+             icon_view->priv->press_start_x = x;
+             icon_view->priv->press_start_y = y;
            }
 
           icon_view->priv->last_single_clicked = item;
@@ -2208,13 +2217,15 @@ gtk_icon_view_button_press (GtkWidget      *widget,
       else
        {
          if (icon_view->priv->selection_mode != GTK_SELECTION_BROWSE &&
-             !(event->state & modify_mod_mask))
+             !(state & modify_mod_mask))
            {
              dirty = gtk_icon_view_unselect_all_internal (icon_view);
            }
          
          if (icon_view->priv->selection_mode == GTK_SELECTION_MULTIPLE)
-            gtk_icon_view_start_rubberbanding (icon_view, event->device, event->x, event->y);
+            gtk_icon_view_start_rubberbanding (icon_view,
+                                               gdk_event_get_device ((GdkEvent *) event),
+                                               x, y);
        }
 
       /* don't draw keyboard focus around an clicked-on item */
@@ -2222,11 +2233,11 @@ gtk_icon_view_button_press (GtkWidget      *widget,
     }
 
   if (!icon_view->priv->activate_on_single_click
-      && event->button == GDK_BUTTON_PRIMARY
-      && event->type == GDK_2BUTTON_PRESS)
+      && button == GDK_BUTTON_PRIMARY
+      && gdk_event_get_event_type ((GdkEvent *) event) == GDK_2BUTTON_PRESS)
     {
       item = _gtk_icon_view_get_item_at_widget_coords (icon_view,
-                                                       event->x, event->y,
+                                                       x, y,
                                                        FALSE,
                                                        NULL);
 
@@ -2246,13 +2257,16 @@ gtk_icon_view_button_press (GtkWidget      *widget,
   if (dirty)
     g_signal_emit (icon_view, icon_view_signals[SELECTION_CHANGED], 0);
 
-  return event->button == GDK_BUTTON_PRIMARY;
+  return button == GDK_BUTTON_PRIMARY;
 }
 
 static gboolean
 button_event_modifies_selection (GdkEventButton *event)
 {
-        return (event->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) != 0;
+  guint state;
+
+  gdk_event_get_state ((GdkEvent *) event, &state);
+  return (state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) != 0;
 }
 
 static gboolean
@@ -2260,17 +2274,23 @@ gtk_icon_view_button_release (GtkWidget      *widget,
                              GdkEventButton *event)
 {
   GtkIconView *icon_view;
+  guint button;
+  gdouble x, y;
 
   icon_view = GTK_ICON_VIEW (widget);
-  
-  if (icon_view->priv->pressed_button == event->button)
+
+  if (!gdk_event_get_button ((GdkEvent *) event, &button) ||
+      !gdk_event_get_coords ((GdkEvent *) event, &x, &y))
+    return GDK_EVENT_PROPAGATE;
+
+  if (icon_view->priv->pressed_button == button)
     icon_view->priv->pressed_button = -1;
 
   gtk_icon_view_stop_rubberbanding (icon_view);
 
   remove_scroll_timeout (icon_view);
 
-  if (event->button == GDK_BUTTON_PRIMARY
+  if (button == GDK_BUTTON_PRIMARY
       && icon_view->priv->activate_on_single_click
       && !button_event_modifies_selection (event)
       && icon_view->priv->last_single_clicked != NULL)
@@ -2278,7 +2298,7 @@ gtk_icon_view_button_release (GtkWidget      *widget,
       GtkIconViewItem *item;
 
       item = _gtk_icon_view_get_item_at_widget_coords (icon_view,
-                                                       event->x, event->y,
+                                                       x, y,
                                                        FALSE,
                                                        NULL);
       if (item == icon_view->priv->last_single_clicked)
@@ -2300,10 +2320,12 @@ gtk_icon_view_key_press (GtkWidget      *widget,
                         GdkEventKey    *event)
 {
   GtkIconView *icon_view = GTK_ICON_VIEW (widget);
+  guint keyval;
 
   if (icon_view->priv->doing_rubberband)
     {
-      if (event->keyval == GDK_KEY_Escape)
+      if (gdk_event_get_keyval ((GdkEvent *) event, &keyval) &&
+          keyval == GDK_KEY_Escape)
        gtk_icon_view_stop_rubberbanding (icon_view);
 
       return TRUE;
@@ -6118,17 +6140,19 @@ gtk_icon_view_maybe_begin_drag (GtkIconView    *icon_view,
   gint button;
   GtkTreeModel *model;
   gboolean retval = FALSE;
+  gdouble x, y;
 
   if (!icon_view->priv->source_set)
     goto out;
 
-  if (icon_view->priv->pressed_button < 0)
+  if (icon_view->priv->pressed_button < 0 ||
+      !gdk_event_get_coords ((GdkEvent *) event, &x, &y))
     goto out;
 
   if (!gtk_drag_check_threshold (GTK_WIDGET (icon_view),
                                  icon_view->priv->press_start_x,
                                  icon_view->priv->press_start_y,
-                                 event->x, event->y))
+                                 x, y))
     goto out;
 
   model = gtk_icon_view_get_model (icon_view);


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