libmalcontent-ui: Improve keynav between listboxes
Fix using the up and down keys to change the keyboard focus between rows between the listboxes. Previously, keynav would fail at the bottom of the first listbox, and at the top of the second. Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
This commit is contained in:
parent
98ebfaa20e
commit
ec7fa2529b
|
@ -711,6 +711,31 @@ list_box_header_func (GtkListBoxRow *row,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
on_keynav_failed (GtkWidget *listbox,
|
||||||
|
GtkDirectionType direction,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
MctUserControls *self = MCT_USER_CONTROLS (user_data);
|
||||||
|
GtkWidget *new_widget = NULL;
|
||||||
|
|
||||||
|
/* There are currently two listboxes, so don’t over-complicate this function. */
|
||||||
|
if (listbox == GTK_WIDGET (self->application_usage_permissions_listbox) &&
|
||||||
|
direction == GTK_DIR_DOWN)
|
||||||
|
new_widget = GTK_WIDGET (self->software_installation_permissions_listbox);
|
||||||
|
else if (listbox == GTK_WIDGET (self->software_installation_permissions_listbox) &&
|
||||||
|
direction == GTK_DIR_UP)
|
||||||
|
new_widget = GTK_WIDGET (self->application_usage_permissions_listbox);
|
||||||
|
|
||||||
|
if (new_widget != NULL)
|
||||||
|
{
|
||||||
|
gtk_widget_child_focus (new_widget, direction);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/* GObject overrides */
|
/* GObject overrides */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1031,6 +1056,7 @@ mct_user_controls_class_init (MctUserControlsClass *klass)
|
||||||
gtk_widget_class_bind_template_callback (widget_class, on_restrict_applications_dialog_delete_event_cb);
|
gtk_widget_class_bind_template_callback (widget_class, on_restrict_applications_dialog_delete_event_cb);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, on_restrict_applications_dialog_response_cb);
|
gtk_widget_class_bind_template_callback (widget_class, on_restrict_applications_dialog_response_cb);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, on_application_usage_permissions_listbox_activated_cb);
|
gtk_widget_class_bind_template_callback (widget_class, on_application_usage_permissions_listbox_activated_cb);
|
||||||
|
gtk_widget_class_bind_template_callback (widget_class, on_keynav_failed);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
<property name="selection_mode">none</property>
|
<property name="selection_mode">none</property>
|
||||||
<property name="activate-on-single-click">True</property>
|
<property name="activate-on-single-click">True</property>
|
||||||
<signal name="row-activated" handler="on_application_usage_permissions_listbox_activated_cb" object="MctUserControls" swapped="no" />
|
<signal name="row-activated" handler="on_application_usage_permissions_listbox_activated_cb" object="MctUserControls" swapped="no" />
|
||||||
|
<signal name="keynav-failed" handler="on_keynav_failed" object="MctUserControls" swapped="no" />
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkListBoxRow">
|
<object class="GtkListBoxRow">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
@ -252,6 +253,7 @@
|
||||||
<property name="hexpand">True</property>
|
<property name="hexpand">True</property>
|
||||||
<property name="selection_mode">none</property>
|
<property name="selection_mode">none</property>
|
||||||
<property name="activate_on_single_click">False</property>
|
<property name="activate_on_single_click">False</property>
|
||||||
|
<signal name="keynav-failed" handler="on_keynav_failed" object="MctUserControls" swapped="no" />
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkListBoxRow">
|
<object class="GtkListBoxRow">
|
||||||
<property name="visible" bind-source="restrict_software_installation_switch" bind-property="visible" bind-flags="default|sync-create" />
|
<property name="visible" bind-source="restrict_software_installation_switch" bind-property="visible" bind-flags="default|sync-create" />
|
||||||
|
|
Loading…
Reference in New Issue