gtk-demo: Use GdkEvent API

This commit is contained in:
Matthias Clasen
2017-08-28 18:47:03 -04:00
parent 8f07e10377
commit 68afbcdb81
7 changed files with 69 additions and 49 deletions

View File

@@ -475,12 +475,14 @@ demo_application_window_state_event (GtkWidget *widget,
{
DemoApplicationWindow *window = (DemoApplicationWindow *)widget;
gboolean res = GDK_EVENT_PROPAGATE;
GdkWindowState changed, new_state;
if (GTK_WIDGET_CLASS (demo_application_window_parent_class)->window_state_event)
res = GTK_WIDGET_CLASS (demo_application_window_parent_class)->window_state_event (widget, event);
window->maximized = (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) != 0;
window->fullscreen = (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) != 0;
gdk_event_get_window_state ((GdkEvent *)event, &changed, &new_state);
window->maximized = (new_state & GDK_WINDOW_STATE_MAXIMIZED) != 0;
window->fullscreen = (new_state & GDK_WINDOW_STATE_FULLSCREEN) != 0;
return res;
}

View File

@@ -172,13 +172,16 @@ paste_image (GtkMenuItem *item,
static gboolean
button_press (GtkWidget *widget,
GdkEventButton *button,
GdkEventButton *event,
gpointer data)
{
GtkWidget *menu;
GtkWidget *item;
guint button;
if (button->button != GDK_BUTTON_SECONDARY)
gdk_event_get_button ((GdkEvent *)event, &button);
if (button != GDK_BUTTON_SECONDARY)
return FALSE;
menu = gtk_menu_new ();
@@ -193,7 +196,7 @@ button_press (GtkWidget *widget,
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_menu_popup_at_pointer (GTK_MENU (menu), (GdkEvent *) button);
gtk_menu_popup_at_pointer (GTK_MENU (menu), (GdkEvent *) event);
return TRUE;
}

View File

@@ -94,11 +94,17 @@ scribble_button_press_event (GtkWidget *widget,
GdkEventButton *event,
gpointer data)
{
double x, y;
guint button;
if (surface == NULL)
return FALSE; /* paranoia check, in case we haven't gotten a configure event */
if (event->button == GDK_BUTTON_PRIMARY)
draw_brush (widget, event->x, event->y);
gdk_event_get_button ((GdkEvent *)event, &button);
gdk_event_get_coords ((GdkEvent *)event, &x, &y);
if (button == GDK_BUTTON_PRIMARY)
draw_brush (widget, x, y);
/* We've handled the event, stop processing */
return TRUE;
@@ -126,7 +132,7 @@ scribble_motion_notify_event (GtkWidget *widget,
* can cope.
*/
gdk_window_get_device_position (event->window, event->device, &x, &y, &state);
gdk_window_get_device_position (gdk_event_get_window (event), gdk_event_get_device (event), &x, &y, &state);
if (state & GDK_BUTTON1_MASK)
draw_brush (widget, x, y);

View File

@@ -120,6 +120,7 @@ update_axes_from_event (GdkEvent *event,
GdkDevice *device, *source_device;
GdkEventSequence *sequence;
GdkDeviceTool *tool;
GdkEventType type;
gdouble x, y;
AxesInfo *info;
@@ -127,14 +128,15 @@ update_axes_from_event (GdkEvent *event,
source_device = gdk_event_get_source_device (event);
sequence = gdk_event_get_event_sequence (event);
tool = gdk_event_get_device_tool (event);
type = gdk_event_get_event_type (event);
if (event->type == GDK_TOUCH_END ||
event->type == GDK_TOUCH_CANCEL)
if (type == GDK_TOUCH_END ||
type == GDK_TOUCH_CANCEL)
{
g_hash_table_remove (data->touch_info, sequence);
return;
}
else if (event->type == GDK_LEAVE_NOTIFY)
else if (type == GDK_LEAVE_NOTIFY)
{
g_hash_table_remove (data->pointer_info, device);
return;
@@ -172,24 +174,24 @@ update_axes_from_event (GdkEvent *event,
g_clear_pointer (&info->axes, g_free);
if (event->type == GDK_TOUCH_BEGIN ||
event->type == GDK_TOUCH_UPDATE)
if (type == GDK_TOUCH_BEGIN ||
type == GDK_TOUCH_UPDATE)
{
if (sequence && event->touch.emulating_pointer)
gboolean emulating_pointer;
gdk_event_get_touch_emulating_pointer (event, &emulating_pointer);
if (sequence && emulating_pointer)
g_hash_table_remove (data->pointer_info, device);
}
if (event->type == GDK_MOTION_NOTIFY)
if (type == GDK_MOTION_NOTIFY ||
type == GDK_BUTTON_PRESS ||
type == GDK_BUTTON_RELEASE)
{
info->axes =
g_memdup (event->motion.axes,
sizeof (gdouble) * gdk_device_get_n_axes (source_device));
}
else if (event->type == GDK_BUTTON_PRESS ||
event->type == GDK_BUTTON_RELEASE)
{
info->axes =
g_memdup (event->button.axes,
sizeof (gdouble) * gdk_device_get_n_axes (source_device));
gdouble *axes;
guint n_axes;
gdk_event_get_axes (event, &axes, &n_axes);
info->axes = g_memdup (axes, sizeof (double) * n_axes);
}
if (gdk_event_get_coords (event, &x, &y))

View File

@@ -456,7 +456,11 @@ switch_to_label (void)
static gboolean
entry_key_press (GtkEntry *entry, GdkEventKey *event)
{
if (event->keyval == GDK_KEY_Escape)
guint keyval;
gdk_event_get_keyval ((GdkEvent *)event, &keyval);
if (keyval == GDK_KEY_Escape)
{
gtk_entry_set_text (GTK_ENTRY (entry), text);
switch_to_label ();

View File

@@ -110,8 +110,11 @@ key_press_event (GtkWidget *text_view,
{
GtkTextIter iter;
GtkTextBuffer *buffer;
guint keyval;
switch (event->keyval)
gdk_event_get_keyval ((GdkEvent *)event, &keyval);
switch (keyval)
{
case GDK_KEY_Return:
case GDK_KEY_KP_Enter:
@@ -137,31 +140,27 @@ event_after (GtkWidget *text_view,
GtkTextIter start, end, iter;
GtkTextBuffer *buffer;
gdouble ex, ey;
gint x, y;
int x, y;
GdkEventType type;
if (ev->type == GDK_BUTTON_RELEASE)
type = gdk_event_get_event_type (ev);
if (type == GDK_BUTTON_RELEASE)
{
GdkEventButton *event;
guint button;
event = (GdkEventButton *)ev;
if (event->button != GDK_BUTTON_PRIMARY)
gdk_event_get_button (ev, &button);
if (button != GDK_BUTTON_PRIMARY)
return FALSE;
ex = event->x;
ey = event->y;
}
else if (ev->type == GDK_TOUCH_END)
else if (type == GDK_TOUCH_END)
{
GdkEventTouch *event;
event = (GdkEventTouch *)ev;
ex = event->x;
ey = event->y;
}
else
return FALSE;
gdk_event_get_coords (ev, &ex, &ey);
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
/* we shouldn't follow a link if the user has selected something */
@@ -232,11 +231,13 @@ static gboolean
motion_notify_event (GtkWidget *text_view,
GdkEventMotion *event)
{
gdouble ex, ey;
gint x, y;
gdk_event_get_coords ((GdkEvent *)event, &ex, &ey);
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
GTK_TEXT_WINDOW_WIDGET,
event->x, event->y, &x, &y);
ex, ey, &x, &y);
set_cursor_if_appropriate (GTK_TEXT_VIEW (text_view), x, y);

View File

@@ -100,18 +100,20 @@ day_selected_cb (GtkCalendar *calendar,
GtkAllocation allocation;
GtkWidget *popover;
GdkEvent *event;
GdkWindow *window;
gdouble x, y;
event = gtk_get_current_event ();
if (event->type != GDK_BUTTON_PRESS)
if (gdk_event_get_event_type (event) != GDK_BUTTON_PRESS)
return;
gdk_window_coords_to_parent (event->button.window,
event->button.x, event->button.y,
&event->button.x, &event->button.y);
window = gdk_event_get_window (event);
gdk_event_get_coords (event, &x, &y);
gdk_window_coords_to_parent (window, x, y, &x, &y);
gtk_widget_get_allocation (GTK_WIDGET (calendar), &allocation);
rect.x = event->button.x - allocation.x;
rect.y = event->button.y - allocation.y;
rect.x = x - allocation.x;
rect.y = y - allocation.y;
rect.width = rect.height = 1;
popover = create_popover (GTK_WIDGET (calendar),