summaryrefslogtreecommitdiff
path: root/tests/testpopup.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testpopup.c')
-rw-r--r--tests/testpopup.c36
1 files changed, 19 insertions, 17 deletions
diff --git a/tests/testpopup.c b/tests/testpopup.c
index 504c67d1ce..085d08ca2f 100644
--- a/tests/testpopup.c
+++ b/tests/testpopup.c
@@ -12,29 +12,28 @@ draw_popup (GtkDrawingArea *da,
}
static gboolean
-place_popup (GtkWidget *parent,
- GdkEvent *event,
- GtkWidget *popup)
+place_popup (GtkEventControllerMotion *motion,
+ gdouble x,
+ gdouble y,
+ GtkWidget *popup)
{
- gint width, height;
- gdouble x, y;
-
- if (gdk_event_get_event_type (event) == GDK_MOTION_NOTIFY)
- {
- gtk_window_get_size (GTK_WINDOW (popup), &width, &height);
- gdk_event_get_root_coords (event, &x, &y);
- gtk_window_move (GTK_WINDOW (popup),
- (int) x - width / 2,
- (int) y - height / 2);
- }
-
- return GDK_EVENT_PROPAGATE;
+ gint width, height, win_x, win_y;
+ GtkWidget *widget;
+
+ widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (motion));
+
+ gtk_window_get_size (GTK_WINDOW (popup), &width, &height);
+ gtk_window_get_position (GTK_WINDOW (widget), &win_x, &win_y);
+ gtk_window_move (GTK_WINDOW (popup),
+ (int) win_x + x - width / 2,
+ (int) win_y + y - height / 2);
}
static gboolean
on_map (GtkWidget *parent)
{
GtkWidget *popup, *da;
+ GtkEventController *motion;
popup = gtk_window_new (GTK_WINDOW_POPUP);
da = gtk_drawing_area_new ();
@@ -43,7 +42,10 @@ on_map (GtkWidget *parent)
gtk_widget_set_size_request (GTK_WIDGET (popup), 20, 20);
gtk_window_set_transient_for (GTK_WINDOW (popup), GTK_WINDOW (parent));
- g_signal_connect (parent, "event", G_CALLBACK (place_popup), popup);
+
+ motion = gtk_event_controller_motion_new ();
+ gtk_widget_add_controller (parent, motion);
+ g_signal_connect (motion, "motion", G_CALLBACK (place_popup), popup);
gtk_widget_show (popup);