summarylogtreecommitdiffstats
path: root/mate-122.patch
diff options
context:
space:
mode:
Diffstat (limited to 'mate-122.patch')
-rw-r--r--mate-122.patch198
1 files changed, 198 insertions, 0 deletions
diff --git a/mate-122.patch b/mate-122.patch
new file mode 100644
index 000000000000..17048e27823f
--- /dev/null
+++ b/mate-122.patch
@@ -0,0 +1,198 @@
+diff --git a/meson.build b/meson.build
+index 956c3c7..91c25ac 100644
+--- a/meson.build
++++ b/meson.build
+@@ -52,7 +52,7 @@ gnome = import('gnome')
+
+ # Required minimum versions
+ gtk_min_version = '>= 3.18.0'
+-mate_min_version = '>= 1.16.0'
++mate_min_version = '>= 1.21.0'
+ glib_min_version = '>= 2.44.0'
+
+ # GTK/UI deps
+diff --git a/src/backend/apps/apps-backend.c b/src/backend/apps/apps-backend.c
+index 0e76607..1328c48 100644
+--- a/src/backend/apps/apps-backend.c
++++ b/src/backend/apps/apps-backend.c
+@@ -19,6 +19,8 @@ BRISK_BEGIN_PEDANTIC
+ #include "apps-section.h"
+ #include <gio/gio.h>
+ #include <glib/gi18n.h>
++
++#define MATEMENU_I_KNOW_THIS_IS_UNSTABLE
+ #include <matemenu-tree.h>
+ BRISK_END_PEDANTIC
+
+@@ -72,9 +74,11 @@ static void brisk_apps_backend_launch_action(GSimpleAction *action, GVariant *pa
+ DEF_AUTOFREE(gchar, g_free)
+ DEF_AUTOFREE(GSList, g_slist_free)
+ DEF_AUTOFREE(MateMenuTreeDirectory, matemenu_tree_item_unref)
+-DEF_AUTOFREE(MateMenuTreeItem, matemenu_tree_item_unref)
+-DEF_AUTOFREE(MateMenuTree, matemenu_tree_unref)
++DEF_AUTOFREE(MateMenuTreeEntry, matemenu_tree_item_unref)
++DEF_AUTOFREE(MateMenuTreeIter, matemenu_tree_iter_unref)
++DEF_AUTOFREE(MateMenuTree, g_object_unref)
+ DEF_AUTOFREE(GDesktopAppInfo, g_object_unref)
++DEF_AUTOFREE(GError, g_error_free)
+
+ /**
+ * Due to a glib weirdness we must fully invalidate the monitor's cache
+@@ -352,12 +356,18 @@ static gboolean brisk_apps_backend_build_from_tree(BriskAppsBackend *self, const
+ {
+ autofree(MateMenuTree) *tree = NULL;
+ autofree(MateMenuTreeDirectory) *dir = NULL;
++ autofree(GError) *error = NULL;
+
+- tree = matemenu_tree_lookup(menu_id, MATEMENU_TREE_FLAGS_NONE);
++ tree = matemenu_tree_new(menu_id, MATEMENU_TREE_FLAGS_NONE);
+ if (!tree) {
+ return FALSE;
+ }
+
++ if (!matemenu_tree_load_sync(tree, &error)) {
++ g_message("Failed to load tree: %s", error->message);
++ return FALSE;
++ }
++
+ dir = matemenu_tree_get_root_directory(tree);
+ if (!dir) {
+ return FALSE;
+@@ -392,37 +402,31 @@ static void brisk_apps_backend_recurse_root(BriskAppsBackend *self,
+ MateMenuTreeDirectory *directory,
+ MateMenuTreeDirectory *root)
+ {
+- autofree(GSList) *kids = NULL;
+- GSList *elem = NULL;
++ autofree(MateMenuTreeIter) *iter = NULL;
++ MateMenuTreeItemType type;
+
+- kids = matemenu_tree_directory_get_contents(directory);
++ iter = matemenu_tree_directory_iter(directory);
+
+ /* Iterate the root tree */
+- for (elem = kids; elem; elem = elem->next) {
+- autofree(MateMenuTreeItem) *item = elem->data;
+-
+- switch (matemenu_tree_item_get_type(item)) {
++ while ((type = matemenu_tree_iter_next(iter)) != MATEMENU_TREE_ITEM_INVALID) {
++ switch (type) {
+ case MATEMENU_TREE_ITEM_DIRECTORY: {
+- MateMenuTreeDirectory *dir = MATEMENU_TREE_DIRECTORY(item);
++ autofree(MateMenuTreeDirectory) *dir =
++ matemenu_tree_iter_get_directory(iter);
+ autofree(MateMenuTreeDirectory) *parent = NULL;
++ autofree(MateMenuTreeIter) *children = NULL;
+ BriskSection *section = NULL;
+- GSList *children = NULL;
+- guint n_children = 0;
+
+- parent = matemenu_tree_item_get_parent(item);
++ parent = matemenu_tree_directory_get_parent(dir);
+ /* Nested menus basically only happen in mate-settings.menu */
+ if (parent != root) {
+ goto recurse_root;
+ }
+
+- children = matemenu_tree_directory_get_contents(dir);
+- if (children) {
+- n_children = g_slist_length(children);
+- g_slist_free_full(children, matemenu_tree_item_unref);
+- }
++ children = matemenu_tree_directory_iter(dir);
+
+ /* Skip empty sections entirely */
+- if (n_children < 1) {
++ if (matemenu_tree_iter_next(children) == MATEMENU_TREE_ITEM_INVALID) {
+ continue;
+ }
+
+@@ -437,7 +441,7 @@ static void brisk_apps_backend_recurse_root(BriskAppsBackend *self,
+ brisk_apps_backend_recurse_root(self, dir, root);
+ } break;
+ case MATEMENU_TREE_ITEM_ENTRY: {
+- MateMenuTreeEntry *entry = MATEMENU_TREE_ENTRY(item);
++ autofree(MateMenuTreeEntry) *entry = matemenu_tree_iter_get_entry(iter);
+ autofree(GDesktopAppInfo) *info = NULL;
+ const gchar *desktop_file = NULL;
+ BriskItem *app_item = NULL;
+diff --git a/src/backend/apps/apps-section.c b/src/backend/apps/apps-section.c
+index 27d52c4..97dcbdb 100644
+--- a/src/backend/apps/apps-section.c
++++ b/src/backend/apps/apps-section.c
+@@ -54,48 +54,22 @@ static const GIcon *brisk_apps_section_get_icon(BriskSection *item);
+ static const gchar *brisk_apps_section_get_backend_id(BriskSection *item);
+ static gboolean brisk_apps_section_can_show_item(BriskSection *section, BriskItem *item);
+
+-/**
+- * Create a GIcon for the given path
+- */
+-static GIcon *brisk_apps_section_create_path_icon(const gchar *path)
+-{
+- autofree(GFile) *file = NULL;
+-
+- file = g_file_new_for_path(path);
+- if (!file) {
+- return NULL;
+- }
+- return g_file_icon_new(file);
+-}
+-
+ static void brisk_apps_section_update_directory(BriskAppsSection *self,
+ MateMenuTreeDirectory *directory)
+ {
+ g_clear_object(&self->icon);
+ g_clear_pointer(&self->id, g_free);
+ g_clear_pointer(&self->name, g_free);
+- const gchar *icon = NULL;
+
+ if (!directory) {
+ return;
+ }
+
+- /* Set our ID and name */
++ /* Set our ID, name, and icon */
+ self->id =
+ g_strdup_printf("%s.mate-directory", matemenu_tree_directory_get_menu_id(directory));
+ self->name = g_strdup(matemenu_tree_directory_get_name(directory));
+-
+- icon = matemenu_tree_directory_get_icon(directory);
+- if (!icon) {
+- return;
+- }
+-
+- /* Set an appropriate icon based on the string */
+- if (icon[0] == '/') {
+- self->icon = brisk_apps_section_create_path_icon(icon);
+- } else {
+- self->icon = g_themed_icon_new_with_default_fallbacks(icon);
+- }
++ self->icon = matemenu_tree_directory_get_icon(directory);
+ }
+
+ static void brisk_apps_section_set_property(GObject *object, guint id, const GValue *value,
+diff --git a/src/backend/apps/apps-section.h b/src/backend/apps/apps-section.h
+index bc10044..26dcdb8 100644
+--- a/src/backend/apps/apps-section.h
++++ b/src/backend/apps/apps-section.h
+@@ -13,6 +13,8 @@
+
+ #include <gio/gio.h>
+ #include <glib-object.h>
++
++#define MATEMENU_I_KNOW_THIS_IS_UNSTABLE
+ #include <matemenu-tree.h>
+
+ #include "../section.h"
+diff --git a/src/frontend/classic/desktop-button.h b/src/frontend/classic/desktop-button.h
+index 2dd9cce..b6e25c3 100644
+--- a/src/frontend/desktop-button.h
++++ b/src/frontend/desktop-button.h
+@@ -13,7 +13,6 @@
+
+ #include <glib-object.h>
+ #include <gtk/gtk.h>
+-#include <matemenu-tree.h>
+
+ #include "launcher.h"
+