restrict-applications-selector: Use HdyActionRow

Implements click-to-activate for rows in the dialog.
This commit is contained in:
Christopher Davis 2021-02-08 06:14:49 -08:00 committed by Georges Basile Stavracas Neto
parent c68058f0f3
commit 9ed46ae597
1 changed files with 14 additions and 15 deletions

View File

@ -28,6 +28,7 @@
#include <glib-object.h> #include <glib-object.h>
#include <glib/gi18n-lib.h> #include <glib/gi18n-lib.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <libhandy-1/handy.h>
#include <libmalcontent/app-filter.h> #include <libmalcontent/app-filter.h>
#include "restrict-applications-selector.h" #include "restrict-applications-selector.h"
@ -312,7 +313,7 @@ create_row_for_app_cb (gpointer item,
MctRestrictApplicationsSelector *self = MCT_RESTRICT_APPLICATIONS_SELECTOR (user_data); MctRestrictApplicationsSelector *self = MCT_RESTRICT_APPLICATIONS_SELECTOR (user_data);
GAppInfo *app = G_APP_INFO (item); GAppInfo *app = G_APP_INFO (item);
g_autoptr(GIcon) icon = NULL; g_autoptr(GIcon) icon = NULL;
GtkWidget *box, *w; GtkWidget *row, *w;
const gchar *app_name; const gchar *app_name;
gint size; gint size;
GtkStyleContext *context; GtkStyleContext *context;
@ -327,23 +328,16 @@ create_row_for_app_cb (gpointer item,
else else
g_object_ref (icon); g_object_ref (icon);
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); row = hdy_action_row_new ();
gtk_container_set_border_width (GTK_CONTAINER (box), 12);
gtk_widget_set_margin_end (box, 12);
/* Icon */ /* Icon */
w = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_DIALOG); w = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_DIALOG);
gtk_icon_size_lookup (GTK_ICON_SIZE_DND, &size, NULL); gtk_icon_size_lookup (GTK_ICON_SIZE_DND, &size, NULL);
gtk_image_set_pixel_size (GTK_IMAGE (w), size); gtk_image_set_pixel_size (GTK_IMAGE (w), size);
gtk_container_add (GTK_CONTAINER (box), w); hdy_action_row_add_prefix (HDY_ACTION_ROW (row), w);
/* App name label */ /* App name label */
w = g_object_new (GTK_TYPE_LABEL, hdy_preferences_row_set_title (HDY_PREFERENCES_ROW (row), app_name);
"label", app_name,
"hexpand", TRUE,
"xalign", 0.0,
NULL);
gtk_container_add (GTK_CONTAINER (box), w);
/* Switch */ /* Switch */
w = g_object_new (GTK_TYPE_SWITCH, w = g_object_new (GTK_TYPE_SWITCH,
@ -354,16 +348,17 @@ create_row_for_app_cb (gpointer item,
gtk_style_context_add_provider (context, gtk_style_context_add_provider (context,
GTK_STYLE_PROVIDER (self->css_provider), GTK_STYLE_PROVIDER (self->css_provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION - 1); GTK_STYLE_PROVIDER_PRIORITY_APPLICATION - 1);
gtk_container_add (GTK_CONTAINER (box), w); gtk_container_add (GTK_CONTAINER (row), w);
hdy_action_row_set_activatable_widget (HDY_ACTION_ROW (row), w);
gtk_widget_show_all (box); gtk_widget_show_all (row);
/* Fetch status from AccountService */ /* Fetch status from AccountService */
g_object_set_data_full (G_OBJECT (w), "GAppInfo", g_object_ref (app), g_object_unref); g_object_set_data_full (G_OBJECT (w), "GAppInfo", g_object_ref (app), g_object_unref);
update_listbox_row_switch (self, GTK_SWITCH (w)); update_listbox_row_switch (self, GTK_SWITCH (w));
g_signal_connect (w, "notify::active", G_CALLBACK (on_switch_active_changed_cb), self); g_signal_connect (w, "notify::active", G_CALLBACK (on_switch_active_changed_cb), self);
return box; return row;
} }
static gint static gint
@ -792,7 +787,11 @@ mct_restrict_applications_selector_set_app_filter (MctRestrictApplicationsSelect
children = gtk_container_get_children (GTK_CONTAINER (box)); children = gtk_container_get_children (GTK_CONTAINER (box));
g_assert (children != NULL); g_assert (children != NULL);
w = g_list_nth_data (children, 2); w = g_list_nth_data (children, 3);
g_assert (w != NULL && GTK_IS_BOX (w));
children = gtk_container_get_children (GTK_CONTAINER (w));
w = g_list_nth_data (children, 0);
g_assert (w != NULL && GTK_IS_SWITCH (w)); g_assert (w != NULL && GTK_IS_SWITCH (w));
update_listbox_row_switch (self, GTK_SWITCH (w)); update_listbox_row_switch (self, GTK_SWITCH (w));