diff --git a/meson.build b/meson.build index 77293b73fd07d56ed30e131fefaa31d677bfb25e..cde534682d72b892bb98ee75ee7364bf8ff0585c 100644 --- a/meson.build +++ b/meson.build @@ -180,6 +180,13 @@ libhandy_dep = dependency('libhandy-1', fallback: ['libhandy', 'libhandy_dep'], default_options: ['introspection=disabled'] ) +libicons_cache_dep = dependency('libicons-cache-1', + version: '>= 1.1', + fallback: ['libicons-cache', 'lib_dep'], + default_options: [ + 'gtk_target_version=gtk3', + 'introspection=false' + ]) libcall_ui_dep = libcall_ui.get_variable('libcall_ui_dep') libnm_dep = dependency('libnm', version: '>= 1.14') libpolkit_agent_dep = dependency('polkit-agent-1', version: '>= 0.122') diff --git a/src/app-grid-button.c b/src/app-grid-button.c index 114a6824b2b1788666e65532a34e20cbbc329819..1f04d26ae479718b3c49532516a1b705cc57f15a 100644 --- a/src/app-grid-button.c +++ b/src/app-grid-button.c @@ -19,6 +19,8 @@ #include "shell-priv.h" #include "util.h" +#include + /** * PhoshAppGridButton: * @@ -648,6 +650,7 @@ phosh_app_grid_button_set_app_info (PhoshAppGridButton *self, PhoshAppGridButtonPrivate *priv; GIcon *icon; const char *name; + cairo_surface_t *surface; g_return_if_fail (PHOSH_IS_APP_GRID_BUTTON (self)); g_return_if_fail (G_IS_APP_INFO (info) || info == NULL); @@ -678,19 +681,13 @@ phosh_app_grid_button_set_app_info (PhoshAppGridButton *self, phosh_app_grid_base_button_set_label (PHOSH_APP_GRID_BASE_BUTTON (self), name); icon = g_app_info_get_icon (priv->info); - if (G_UNLIKELY (icon == NULL)) { - gtk_image_set_from_icon_name (GTK_IMAGE (priv->icon), - PHOSH_APP_UNKNOWN_ICON, - GTK_ICON_SIZE_DIALOG); - } else { - if (G_IS_THEMED_ICON (icon)) { - g_themed_icon_append_name (G_THEMED_ICON (icon), - PHOSH_APP_UNKNOWN_ICON); - } - gtk_image_set_from_gicon (GTK_IMAGE (priv->icon), - icon, - GTK_ICON_SIZE_DIALOG); - } + + surface = icons_cache_manager_get_surface_by_gicon (icons_cache_manager_get_default (), + icon, + 64); + + gtk_image_set_from_surface (GTK_IMAGE (priv->icon), + surface); gtk_widget_set_sensitive (GTK_WIDGET (self), TRUE); diff --git a/src/app-grid-folder-button.c b/src/app-grid-folder-button.c index fb8db42f272fdb1b364123c0045ce6c602928f25..0e67f95245e804389cbad2dbc47fe03f8674d97e 100644 --- a/src/app-grid-folder-button.c +++ b/src/app-grid-folder-button.c @@ -11,6 +11,8 @@ #include "app-grid-button.h" #include "app-grid-folder-button.h" +#include + /** * PhoshAppGridFolderButton: * @@ -101,20 +103,17 @@ build_2x2_grid_icon (PhoshAppGridFolderButton *self) i < 4 && (app_info = g_list_model_get_item (apps, i)) != NULL; i++) { GtkWidget *image = NULL; + cairo_surface_t *surface; + app_info = g_list_model_get_item (apps, i); icon = g_app_info_get_icon (app_info); - if (icon == NULL) { - image = gtk_image_new_from_icon_name (PHOSH_APP_UNKNOWN_ICON, - GTK_ICON_SIZE_DND); - } else { - if (G_IS_THEMED_ICON (icon)) { - g_themed_icon_append_name (G_THEMED_ICON (icon), - PHOSH_APP_UNKNOWN_ICON); - } - image = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_DND); - } + surface = icons_cache_manager_get_surface_by_gicon (icons_cache_manager_get_default (), + icon, + 24); + + image = gtk_image_new_from_surface (surface); /* app-grid-button uses 64px for its icon. * Our grid has two rows and two columns, with 8px for spacing. diff --git a/src/app-grid.c b/src/app-grid.c index 3ab19812fa80212f30cd04ff0d7f4aecf2d0efe5..17328537ca48eac9d3037da3e6912701737e894b 100644 --- a/src/app-grid.c +++ b/src/app-grid.c @@ -27,6 +27,7 @@ #include "gtk-list-models/gtkfilterlistmodel.h" #include +#include enum { PROP_0, @@ -442,6 +443,10 @@ phosh_app_grid_init (PhoshAppGrid *self) favorites = phosh_favorite_list_model_get_default (); + icons_cache_manager_init (64, + gtk_widget_get_scale_factor (GTK_WIDGET (self)), + PHOSH_APP_UNKNOWN_ICON); + gtk_flow_box_bind_model (GTK_FLOW_BOX (priv->favs), G_LIST_MODEL (favorites), create_favorite_launcher, self, NULL); diff --git a/src/meson.build b/src/meson.build index 561277ce5c2ec3a482672d0a987c1527abb6aa58..8a3721dd4f143f630f56a4285bb3360d030c12b6 100644 --- a/src/meson.build +++ b/src/meson.build @@ -433,6 +433,7 @@ phosh_deps = [ libfeedback_dep, libgvc_dep, libhandy_dep, + libicons_cache_dep, libnm_dep, libpolkit_agent_dep, libsystemd_dep, diff --git a/subprojects/libicons-cache.wrap b/subprojects/libicons-cache.wrap new file mode 100644 index 0000000000000000000000000000000000000000..fa0152b04b4b76d3a640b70483ff577c2a97b527 --- /dev/null +++ b/subprojects/libicons-cache.wrap @@ -0,0 +1,4 @@ +[wrap-git] +directory=libicons-cache +url=https://gitlab.gnome.org/Rirusha/libicons-cache +revision=v1.2