gtk_binding_entry_add_signal (binding_set, GDK_Shift_R,
GDK_RELEASE_MASK | GDK_SHIFT_MASK,
"end_selection", 0);
+ gtk_binding_entry_add_signal (binding_set, GDK_Shift_L,
+ GDK_RELEASE_MASK | GDK_SHIFT_MASK |
+ GDK_CONTROL_MASK,
+ "end_selection", 0);
+ gtk_binding_entry_add_signal (binding_set, GDK_Shift_R,
+ GDK_RELEASE_MASK | GDK_SHIFT_MASK |
+ GDK_CONTROL_MASK,
+ "end_selection", 0);
}
/*
g_return_if_fail (clist != NULL);
g_return_if_fail (GTK_IS_CLIST (clist));
- if (gdk_pointer_is_grabbed () ||
+ if ((gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (clist)) ||
clist->selection_mode != GTK_SELECTION_EXTENDED)
return;
GDK_BUTTON1_MOTION_MASK |
GDK_BUTTON_RELEASE_MASK,
NULL, NULL, event->time);
+ gtk_grab_add (widget);
}
- else if (gdk_pointer_is_grabbed ())
+ else if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (widget))
{
GTK_CLIST_UNSET_FLAG (clist, CLIST_DRAG_SELECTION);
+ gtk_grab_remove (widget);
gdk_pointer_ungrab (event->time);
}
{
if (event->state & GDK_SHIFT_MASK)
{
- set_anchor (clist, TRUE, old_row, old_row);
+ if (clist->anchor < 0)
+ {
+ g_list_free (clist->undo_selection);
+ g_list_free (clist->undo_unselection);
+ clist->undo_selection = NULL;
+ clist->undo_unselection = NULL;
+ clist->anchor = old_row;
+ clist->drag_pos = old_row;
+ clist->undo_anchor = old_row;
+ }
update_extended_selection (clist, clist->focus_row);
}
else
GDK_BUTTON1_MOTION_MASK |
GDK_BUTTON_RELEASE_MASK,
NULL, NULL, event->time);
+ gtk_grab_add (widget);
if (GTK_CLIST_ADD_MODE (clist))
gdk_gc_set_line_attributes (clist->xor_gc, 1, GDK_LINE_SOLID, 0, 0);
GTK_CLIST_UNSET_FLAG (clist, CLIST_IN_DRAG);
gtk_widget_get_pointer (widget, &x, NULL);
width = new_column_width (clist, i, &x, &visible);
+
+ gtk_grab_remove (widget);
gdk_pointer_ungrab (event->time);
if (visible)
gint column;
GTK_CLIST_UNSET_FLAG (clist, CLIST_DRAG_SELECTION);
+ gtk_grab_remove (widget);
gdk_pointer_ungrab (event->time);
if (clist->htimer)
{
g_return_if_fail (clist != 0);
g_return_if_fail (GTK_IS_CLIST (clist));
- if (gdk_pointer_is_grabbed () ||
+ if ((gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (clist)) ||
clist->selection_mode != GTK_SELECTION_EXTENDED)
return;
g_return_if_fail (clist != 0);
g_return_if_fail (GTK_IS_CLIST (clist));
- if (gdk_pointer_is_grabbed () ||
+ if ((gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (clist)) ||
clist->focus_row < 0 || clist->focus_row >= clist->rows)
return;
g_return_if_fail (clist != 0);
g_return_if_fail (GTK_IS_CLIST (clist));
- if (gdk_pointer_is_grabbed ())
+ if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (clist))
return;
switch (scroll_type)
g_return_if_fail (clist != NULL);
g_return_if_fail (GTK_IS_CLIST (clist));
- if (gdk_pointer_is_grabbed ())
+ if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (clist))
return;
switch (clist->selection_mode)
g_return_if_fail (clist != NULL);
g_return_if_fail (GTK_IS_CLIST (clist));
- if (gdk_pointer_is_grabbed ())
+ if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (clist))
return;
set_anchor (clist, GTK_CLIST_ADD_MODE (clist), clist->focus_row,
g_return_if_fail (clist != NULL);
g_return_if_fail (GTK_IS_CLIST (clist));
- if (gdk_pointer_is_grabbed () || clist->anchor == -1)
+ if ((gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_FOCUS (clist)) ||
+ clist->anchor == -1)
return;
GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL);
g_return_if_fail (clist != NULL);
g_return_if_fail (GTK_IS_CLIST (clist));
- if (gdk_pointer_is_grabbed () ||
+ if ((gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (clist)) ||
clist->selection_mode != GTK_SELECTION_EXTENDED)
return;
return;
GTK_CLIST_UNSET_FLAG (clist, CLIST_IN_DRAG);
+ gtk_grab_remove (clist);
gdk_pointer_ungrab (gdk_time_get());
if (clist->x_drag >= 0 && clist->x_drag <= clist->clist_window_width - 1)
if (event->keyval == GDK_Escape && GTK_CLIST_IN_DRAG (clist))
{
GTK_CLIST_UNSET_FLAG (clist, CLIST_IN_DRAG);
+ gtk_grab_remove (widget);
gdk_pointer_ungrab (event->time);
if (clist->x_drag >= 0 && clist->x_drag <= clist->clist_window_width - 1)
g_return_if_fail (clist != NULL);
g_return_if_fail (GTK_IS_CLIST (clist));
- if (gdk_pointer_is_grabbed ())
+ if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (clist))
return;
switch (clist->selection_mode)
g_return_if_fail (clist != NULL);
g_return_if_fail (GTK_IS_CLIST (clist));
- if (gdk_pointer_is_grabbed ())
+ if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (clist))
return;
switch (clist->selection_mode)
GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON2_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
NULL, NULL, event->time);
+ gtk_grab_add (widget);
ctree->in_drag = TRUE;
ctree->drag_source = work;
ctree->drag_target = NULL;
GDK_BUTTON1_MOTION_MASK |
GDK_BUTTON_RELEASE_MASK,
NULL, NULL, event->time);
+ gtk_grab_add (widget);
if (GTK_CLIST_ADD_MODE (clist))
{
if (event->button == 2 && clist->anchor == -1)
{
+ gtk_grab_remove (widget);
gdk_pointer_ungrab (event->time);
+
ctree->in_drag = FALSE;
if (ctree->use_icons && ctree->drag_icon)
}
}
-
if (work)
{
work->prev->next = NULL;
work->prev = node->prev;
}
-
if (node->prev && node->prev->next == node)
node->prev->next = work;
clist = GTK_CLIST (ctree);
- if (gdk_pointer_is_grabbed ())
+ if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (ctree))
return;
if (!(node = g_list_nth (clist->row_list, clist->focus_row)) ||
g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree));
- if (!node)
+ if (!node || GTK_CTREE_ROW (node)->row.state == GTK_STATE_SELECTED)
return;
clist = GTK_CLIST (ctree);
g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree));
- if (!node)
+ if (!node || GTK_CTREE_ROW (node)->row.state != GTK_STATE_SELECTED)
return;
clist = GTK_CLIST (ctree);
- if (GTK_CTREE_ROW (node)->row.state != GTK_STATE_SELECTED)
- return;
-
if (clist->selection_end && clist->selection_end->data == node)
clist->selection_end = clist->selection_end->prev;