From 0ad357ed46c1631e085ae15a5c8deb3ceeea0a53 Mon Sep 17 00:00:00 2001 From: daleclack Date: Thu, 9 May 2024 17:21:41 +0800 Subject: [PATCH] Adjust some functions --- Gtk4_Reset/src/ui/AppView.cpp | 37 +++++++++++++++++++++-------------- Gtk4_Reset/src/ui/AppView.h | 2 +- Gtk4_Reset/src/ui/MyDock.cpp | 2 +- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/Gtk4_Reset/src/ui/AppView.cpp b/Gtk4_Reset/src/ui/AppView.cpp index 943bde4..26ba8e9 100644 --- a/Gtk4_Reset/src/ui/AppView.cpp +++ b/Gtk4_Reset/src/ui/AppView.cpp @@ -23,7 +23,7 @@ static GListModel *create_app_model() return G_LIST_MODEL(store); } -static void app_view_setup(GtkListItemFactory *factory, GtkListItem *item) +static void app_ext_view_setup(GtkListItemFactory *factory, GtkListItem *item) { GtkWidget *app_box, *image, *label; @@ -42,7 +42,7 @@ static void app_view_setup(GtkListItemFactory *factory, GtkListItem *item) gtk_list_item_set_child(item, app_box); } -static void app_view_bind(GtkListItemFactory *factory, GtkListItem *item) +static void app_ext_view_bind(GtkListItemFactory *factory, GtkListItem *item) { GtkWidget *image; GtkWidget *label; @@ -55,10 +55,12 @@ static void app_view_bind(GtkListItemFactory *factory, GtkListItem *item) // Initalize widgets GIcon *icon = g_app_info_get_icon(app_info); - if(!icon) + if (!icon) { gtk_image_set_from_icon_name(GTK_IMAGE(image), "application-x-executable"); - }else{ + } + else + { gtk_image_set_from_gicon(GTK_IMAGE(image), g_app_info_get_icon(app_info)); } gtk_label_set_label(GTK_LABEL(label), g_app_info_get_display_name(app_info)); @@ -99,7 +101,7 @@ static void app_view_activate(GtkGridView *list, guint position, gpointer data) g_object_unref(app_info); } -GtkWidget *app_view_new() +GtkWidget *app_view_new(gboolean external) { GtkWidget *list, *sw; GListModel *model; @@ -110,17 +112,22 @@ GtkWidget *app_view_new() gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - // Create list item factory - factory = gtk_signal_list_item_factory_new(); - g_signal_connect(factory, "setup", G_CALLBACK(app_view_setup), NULL); - g_signal_connect(factory, "bind", G_CALLBACK(app_view_bind), NULL); + // Create view for external applications + if (external) + { + // Create list item factory + factory = gtk_signal_list_item_factory_new(); + g_signal_connect(factory, "setup", G_CALLBACK(app_ext_view_setup), NULL); + g_signal_connect(factory, "bind", G_CALLBACK(app_ext_view_bind), NULL); + + // Create model and view + model = create_app_model(); + list = gtk_grid_view_new(GTK_SELECTION_MODEL( + gtk_single_selection_new(model)), + factory); + g_signal_connect(list, "activate", G_CALLBACK(app_view_activate), NULL); + } - // Create model and view - model = create_app_model(); - list = gtk_grid_view_new(GTK_SELECTION_MODEL( - gtk_single_selection_new(model)), - factory); - g_signal_connect(list, "activate", G_CALLBACK(app_view_activate), NULL); gtk_grid_view_set_min_columns(GTK_GRID_VIEW(list), 8); // Add Child diff --git a/Gtk4_Reset/src/ui/AppView.h b/Gtk4_Reset/src/ui/AppView.h index ca6fc99..edfc233 100644 --- a/Gtk4_Reset/src/ui/AppView.h +++ b/Gtk4_Reset/src/ui/AppView.h @@ -2,4 +2,4 @@ #include -GtkWidget *app_view_new(); +GtkWidget *app_view_new(gboolean external); diff --git a/Gtk4_Reset/src/ui/MyDock.cpp b/Gtk4_Reset/src/ui/MyDock.cpp index 94c2ce5..b9c5305 100644 --- a/Gtk4_Reset/src/ui/MyDock.cpp +++ b/Gtk4_Reset/src/ui/MyDock.cpp @@ -893,7 +893,7 @@ static void my_dock_init(MyDock *self) gtk_grid_set_row_spacing(GTK_GRID(self->apps_grid), 20); // Add Addon apps view - self->apps_view = app_view_new(); + self->apps_view = app_view_new(TRUE); gtk_box_append(GTK_BOX(self->addon_box), self->apps_view); gtk_widget_set_halign(self->addon_box, GTK_ALIGN_CENTER); gtk_widget_set_halign(self->apps_view, GTK_ALIGN_CENTER);