GtkListBox: Implement non-selectable rows

This commit changes things so that we never mark non-selectable
rows as selected.
This commit is contained in:
Matthias Clasen 2014-07-15 23:14:28 -04:00
parent 7932370ef8
commit 0bfad993ac

View File

@ -1388,6 +1388,9 @@ static gboolean
gtk_list_box_row_set_selected (GtkListBoxRow *row,
gboolean selected)
{
if (!ROW_PRIV (row)->selectable)
return FALSE;
if (ROW_PRIV (row)->selected != selected)
{
ROW_PRIV (row)->selected = selected;
@ -1448,11 +1451,15 @@ static void
gtk_list_box_select_row_internal (GtkListBox *box,
GtkListBoxRow *row)
{
if (!ROW_PRIV (row)->selectable)
return;
if (ROW_PRIV (row)->selected)
return;
if (BOX_PRIV (box)->selection_mode == GTK_SELECTION_NONE)
return;
if (BOX_PRIV (box)->selection_mode != GTK_SELECTION_MULTIPLE)
gtk_list_box_unselect_all_internal (box);
@ -1521,6 +1528,9 @@ gtk_list_box_update_selection (GtkListBox *box,
if (priv->selection_mode == GTK_SELECTION_NONE)
return;
if (!ROW_PRIV (row)->selectable)
return;
if (priv->selection_mode == GTK_SELECTION_BROWSE)
{
gtk_list_box_unselect_all_internal (box);