xed-notebook.c: check vertical mouse position when determining

whether a tab is being manipulated.  We were just checking
horizontal position, which meant that depending on where you start
a drag-and-drop, it might think you're trying to drag a tab instead,
causing undesirable behavior.
This commit is contained in:
Michael Webster 2016-06-22 18:08:19 -04:00
parent 24a6a23e61
commit 78080f80bb
1 changed files with 21 additions and 14 deletions

View File

@ -253,6 +253,7 @@ find_tab_num_at_pos (XedNotebook *notebook,
{ {
GtkAllocation allocation; GtkAllocation allocation;
GtkWidget *tab; GtkWidget *tab;
gint min_x, min_y;
gint max_x, max_y; gint max_x, max_y;
gint x_root, y_root; gint x_root, y_root;
@ -270,18 +271,24 @@ find_tab_num_at_pos (XedNotebook *notebook,
gtk_widget_get_allocation(tab, &allocation); gtk_widget_get_allocation(tab, &allocation);
min_x = x_root + allocation.x;
max_x = x_root + allocation.x + allocation.width; max_x = x_root + allocation.x + allocation.width;
min_y = y_root + allocation.y;
max_y = y_root + allocation.y + allocation.height; max_y = y_root + allocation.y + allocation.height;
if (((tab_pos == GTK_POS_TOP) || if (((tab_pos == GTK_POS_TOP) ||
(tab_pos == GTK_POS_BOTTOM)) && (tab_pos == GTK_POS_BOTTOM)) &&
(abs_x <= max_x)) (abs_x <= max_x) &&
(abs_y >= min_y) &&
(abs_y <= max_y))
{ {
return page_num; return page_num;
} }
else if (((tab_pos == GTK_POS_LEFT) || else if (((tab_pos == GTK_POS_LEFT) ||
(tab_pos == GTK_POS_RIGHT)) && (tab_pos == GTK_POS_RIGHT)) &&
(abs_y <= max_y)) (abs_y <= max_y) &&
(abs_x >= min_x) &&
(abs_x <= max_x))
{ {
return page_num; return page_num;
} }