[gtk+] GtkListBox: Allow unselecting of rows in SINGLE mode
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] GtkListBox: Allow unselecting of rows in SINGLE mode
- Date: Thu, 13 Jun 2013 10:18:34 +0000 (UTC)
commit b119b022a729bc2b2251ec80b991432dbfb8122c
Author: Alexander Larsson <alexl redhat com>
Date: Tue Jun 11 15:04:02 2013 +0200
GtkListBox: Allow unselecting of rows in SINGLE mode
gtk/gtklistbox.c | 37 +++++++++++++++++++++++++++----------
1 files changed, 27 insertions(+), 10 deletions(-)
---
diff --git a/gtk/gtklistbox.c b/gtk/gtklistbox.c
index e96690d..6507943 100644
--- a/gtk/gtklistbox.c
+++ b/gtk/gtklistbox.c
@@ -1109,23 +1109,40 @@ gtk_list_box_real_button_press_event (GtkWidget *widget,
{
GtkListBox *list_box = GTK_LIST_BOX (widget);
GtkListBoxPrivate *priv = list_box->priv;
+ gboolean ctrl_pressed;
if (event->button == GDK_BUTTON_PRIMARY)
{
GtkListBoxRow *row;
+
+ ctrl_pressed = (event->state & GDK_CONTROL_MASK) != 0;
+
+ priv->active_row = NULL;
+
row = gtk_list_box_get_row_at_y (list_box, event->y);
if (row != NULL)
{
- priv->active_row = row;
- priv->active_row_active = TRUE;
- gtk_widget_set_state_flags (GTK_WIDGET (priv->active_row),
- GTK_STATE_FLAG_ACTIVE,
- FALSE);
- gtk_widget_queue_draw (GTK_WIDGET (list_box));
- if (event->type == GDK_2BUTTON_PRESS &&
- !priv->activate_single_click)
- g_signal_emit (list_box, signals[ROW_ACTIVATED], 0,
- row);
+ if (ctrl_pressed)
+ {
+ if (priv->selection_mode == GTK_SELECTION_SINGLE &&
+ priv->selected_row == row)
+ gtk_list_box_update_selected (list_box, NULL);
+ else
+ gtk_list_box_update_selected (list_box, row);
+ }
+ else
+ {
+ priv->active_row = row;
+ priv->active_row_active = TRUE;
+ gtk_widget_set_state_flags (GTK_WIDGET (priv->active_row),
+ GTK_STATE_FLAG_ACTIVE,
+ FALSE);
+ gtk_widget_queue_draw (GTK_WIDGET (list_box));
+ if (event->type == GDK_2BUTTON_PRESS &&
+ !priv->activate_single_click)
+ g_signal_emit (list_box, signals[ROW_ACTIVATED], 0,
+ row);
+ }
}
/* TODO:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]