[gtk+/wip/carlosg/private-event-structs: 18/41] iconview: Update to using GdkEvent API
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/carlosg/private-event-structs: 18/41] iconview: Update to using GdkEvent API
- Date: Fri, 25 Aug 2017 15:06:45 +0000 (UTC)
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]