Don't start a drag if we are not resizable
This was caused by get_drag_edge() returning -1 to mean 'no drag', but callers didn't really pay attention. Change get_drag_edge() to return a boolean instead.
This commit is contained in:
parent
803233cc14
commit
5e1d8814ca
@ -5015,15 +5015,15 @@ get_grip_edge (GtkWidget *widget)
|
|||||||
: GDK_WINDOW_EDGE_SOUTH_WEST;
|
: GDK_WINDOW_EDGE_SOUTH_WEST;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GdkWindowEdge
|
static gboolean
|
||||||
get_drag_edge (GtkWidget *widget)
|
get_drag_edge (GtkWidget *widget,
|
||||||
|
GdkWindowEdge *edge)
|
||||||
{
|
{
|
||||||
GdkGeometry geometry;
|
GdkGeometry geometry;
|
||||||
guint flags;
|
guint flags;
|
||||||
gboolean hresizable;
|
gboolean hresizable;
|
||||||
gboolean vresizable;
|
gboolean vresizable;
|
||||||
GtkTextDirection dir;
|
GtkTextDirection dir;
|
||||||
GdkWindowEdge edge;
|
|
||||||
|
|
||||||
gtk_window_compute_hints (GTK_WINDOW (widget), &geometry, &flags);
|
gtk_window_compute_hints (GTK_WINDOW (widget), &geometry, &flags);
|
||||||
|
|
||||||
@ -5041,15 +5041,15 @@ get_drag_edge (GtkWidget *widget)
|
|||||||
dir = gtk_widget_get_direction (widget);
|
dir = gtk_widget_get_direction (widget);
|
||||||
|
|
||||||
if (hresizable && vresizable)
|
if (hresizable && vresizable)
|
||||||
edge = dir == GTK_TEXT_DIR_LTR ? GDK_WINDOW_EDGE_SOUTH_EAST : GDK_WINDOW_EDGE_SOUTH_WEST;
|
*edge = dir == GTK_TEXT_DIR_LTR ? GDK_WINDOW_EDGE_SOUTH_EAST : GDK_WINDOW_EDGE_SOUTH_WEST;
|
||||||
else if (hresizable)
|
else if (hresizable)
|
||||||
edge = dir == GTK_TEXT_DIR_LTR ? GDK_WINDOW_EDGE_EAST : GDK_WINDOW_EDGE_WEST;
|
*edge = dir == GTK_TEXT_DIR_LTR ? GDK_WINDOW_EDGE_EAST : GDK_WINDOW_EDGE_WEST;
|
||||||
else if (vresizable)
|
else if (vresizable)
|
||||||
edge = GDK_WINDOW_EDGE_SOUTH;
|
*edge = GDK_WINDOW_EDGE_SOUTH;
|
||||||
else
|
else
|
||||||
edge = (GdkWindowEdge)-1;
|
return FALSE;
|
||||||
|
|
||||||
return edge;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -5057,17 +5057,21 @@ set_grip_cursor (GtkWindow *window)
|
|||||||
{
|
{
|
||||||
GtkWidget *widget = GTK_WIDGET (window);
|
GtkWidget *widget = GTK_WIDGET (window);
|
||||||
GtkWindowPrivate *priv = window->priv;
|
GtkWindowPrivate *priv = window->priv;
|
||||||
GdkWindowEdge edge;
|
|
||||||
GdkDisplay *display;
|
|
||||||
GdkCursorType cursor_type;
|
|
||||||
GdkCursor *cursor;
|
|
||||||
|
|
||||||
if (priv->grip_window == NULL)
|
if (priv->grip_window == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (gtk_widget_is_sensitive (widget))
|
if (gtk_widget_is_sensitive (widget))
|
||||||
{
|
{
|
||||||
edge = get_drag_edge (widget);
|
GdkWindowEdge edge;
|
||||||
|
GdkDisplay *display;
|
||||||
|
GdkCursorType cursor_type;
|
||||||
|
GdkCursor *cursor;
|
||||||
|
|
||||||
|
cursor_type = GDK_LEFT_PTR;
|
||||||
|
|
||||||
|
if (get_drag_edge (widget, &edge))
|
||||||
|
{
|
||||||
switch (edge)
|
switch (edge)
|
||||||
{
|
{
|
||||||
case GDK_WINDOW_EDGE_EAST:
|
case GDK_WINDOW_EDGE_EAST:
|
||||||
@ -5085,9 +5089,8 @@ set_grip_cursor (GtkWindow *window)
|
|||||||
case GDK_WINDOW_EDGE_WEST:
|
case GDK_WINDOW_EDGE_WEST:
|
||||||
cursor_type = GDK_LEFT_SIDE;
|
cursor_type = GDK_LEFT_SIDE;
|
||||||
break;
|
break;
|
||||||
default:
|
default: ;
|
||||||
cursor_type = GDK_LEFT_PTR;
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
display = gtk_widget_get_display (widget);
|
display = gtk_widget_get_display (widget);
|
||||||
@ -5718,11 +5721,13 @@ gtk_window_button_press_event (GtkWidget *widget,
|
|||||||
GdkEventButton *event)
|
GdkEventButton *event)
|
||||||
{
|
{
|
||||||
GtkWindowPrivate *priv = GTK_WINDOW (widget)->priv;
|
GtkWindowPrivate *priv = GTK_WINDOW (widget)->priv;
|
||||||
|
GdkWindowEdge edge;
|
||||||
|
|
||||||
if (event->window == priv->grip_window)
|
if (event->window == priv->grip_window)
|
||||||
{
|
{
|
||||||
|
if (get_drag_edge (widget, &edge))
|
||||||
gtk_window_begin_resize_drag (GTK_WINDOW (widget),
|
gtk_window_begin_resize_drag (GTK_WINDOW (widget),
|
||||||
get_drag_edge (widget),
|
edge,
|
||||||
event->button,
|
event->button,
|
||||||
event->x_root,
|
event->x_root,
|
||||||
event->y_root,
|
event->y_root,
|
||||||
|
Loading…
Reference in New Issue
Block a user