summaryrefslogtreecommitdiff
path: root/gladeui
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2014-04-17 00:51:11 -0300
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>2014-04-17 00:59:57 -0300
commitf38b91c46bf7a915e2984524d72a8eb97afceba5 (patch)
treed6eecde0043a484ed7c538e16d5a9a30a4169255 /gladeui
parent4339165df529776d0dac823241d23ca32fe01464 (diff)
downloadglade-f38b91c46bf7a915e2984524d72a8eb97afceba5.tar.gz
Fixed cursor glitch while moving the poiner across multiple placeholders.
The glitch was because we where updating the cursor on motion event only so when the pointer enters a new placeholder the cursor is set back to default and then changed again when the motion notify is finally triggered.
Diffstat (limited to 'gladeui')
-rw-r--r--gladeui/glade-placeholder.c31
1 files changed, 20 insertions, 11 deletions
diff --git a/gladeui/glade-placeholder.c b/gladeui/glade-placeholder.c
index 6db4f1ab..40a4cb0f 100644
--- a/gladeui/glade-placeholder.c
+++ b/gladeui/glade-placeholder.c
@@ -353,22 +353,30 @@ glade_placeholder_draw (GtkWidget *widget, cairo_t *cr)
return FALSE;
}
-static gboolean
-glade_placeholder_motion_notify_event (GtkWidget *widget, GdkEventMotion *event)
+static void
+glade_placeholder_update_cursor (GladePlaceholder *placeholder, GdkWindow *win)
{
- GladePointerMode pointer_mode;
- GladeProject *project;
-
- g_return_val_if_fail (GLADE_IS_PLACEHOLDER (widget), FALSE);
-
- project = glade_placeholder_get_project (GLADE_PLACEHOLDER (widget));
- pointer_mode = glade_project_get_pointer_mode (project);
+ GladeProject *project = glade_placeholder_get_project (placeholder);
+ GladePointerMode pointer_mode = glade_project_get_pointer_mode (project);
if (pointer_mode == GLADE_POINTER_SELECT)
- glade_cursor_set (project, event->window, GLADE_CURSOR_SELECTOR);
+ glade_cursor_set (project, win, GLADE_CURSOR_SELECTOR);
else if (pointer_mode == GLADE_POINTER_ADD_WIDGET)
- glade_cursor_set (project, event->window, GLADE_CURSOR_ADD_WIDGET);
+ glade_cursor_set (project, win, GLADE_CURSOR_ADD_WIDGET);
+}
+static gboolean
+glade_placeholder_enter_notify_event (GtkWidget *widget,
+ GdkEventCrossing *event)
+{
+ glade_placeholder_update_cursor (GLADE_PLACEHOLDER (widget), event->window);
+ return FALSE;
+}
+
+static gboolean
+glade_placeholder_motion_notify_event (GtkWidget *widget, GdkEventMotion *event)
+{
+ glade_placeholder_update_cursor (GLADE_PLACEHOLDER (widget), event->window);
return FALSE;
}
@@ -537,6 +545,7 @@ glade_placeholder_class_init (GladePlaceholderClass *klass)
widget_class->unmap = glade_placeholder_unmap;
widget_class->size_allocate = glade_placeholder_size_allocate;
widget_class->draw = glade_placeholder_draw;
+ widget_class->enter_notify_event = glade_placeholder_enter_notify_event;
widget_class->motion_notify_event = glade_placeholder_motion_notify_event;
widget_class->button_press_event = glade_placeholder_button_press;
widget_class->popup_menu = glade_placeholder_popup_menu;