[gtk+] iconview: Update to using GdkEvent API



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

    iconview: Update to using GdkEvent API

 gtk/gtkiconview.c |   42 +++++++++++++++++++++++++++---------------
 1 files changed, 27 insertions(+), 15 deletions(-)
---
diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c
index 5b0d536..76a9737 100644
--- a/gtk/gtkiconview.c
+++ b/gtk/gtkiconview.c
@@ -1820,7 +1820,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)));
@@ -1834,8 +1834,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, 
@@ -1853,7 +1853,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);
 
@@ -2122,11 +2123,13 @@ gtk_icon_view_button_press (GtkGestureMultiPress *gesture,
   int button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture));
   GdkEventSequence *sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
   const GdkEventButton *event = (const GdkEventButton *)gtk_gesture_get_last_event (GTK_GESTURE (gesture), 
sequence);
+  GdkModifierType state;
 
   if (!gtk_widget_has_focus (widget))
     gtk_widget_grab_focus (widget);
 
-  if (button == GDK_BUTTON_PRIMARY)
+  if (button == GDK_BUTTON_PRIMARY &&
+      gdk_event_get_state ((GdkEvent *) event, &state))
     {
       GdkModifierType extend_mod_mask;
       GdkModifierType modify_mod_mask;
@@ -2162,7 +2165,7 @@ gtk_icon_view_button_press (GtkGestureMultiPress *gesture,
              _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);
 
@@ -2175,11 +2178,11 @@ gtk_icon_view_button_press (GtkGestureMultiPress *gesture,
                                                  item);
              dirty = TRUE;
            }
-         else 
+         else
            {
              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);
@@ -2225,13 +2228,15 @@ gtk_icon_view_button_press (GtkGestureMultiPress *gesture,
       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, x, y);
+            gtk_icon_view_start_rubberbanding (icon_view,
+                                              gtk_gesture_get_device (GTK_GESTURE (gesture)),
+                                              x, y);
        }
 
       /* don't draw keyboard focus around an clicked-on item */
@@ -2267,7 +2272,10 @@ gtk_icon_view_button_press (GtkGestureMultiPress *gesture,
 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 void
@@ -2317,10 +2325,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;
@@ -6135,17 +6145,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]