summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD17
-rw-r--r--mate-122.patch198
3 files changed, 214 insertions, 5 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 697c0bf1ba50..40faa865ff01 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = brisk-menu-git
pkgdesc = Modern, efficient menu for the MATE Desktop Environment - git version
- pkgver = v0.5.0.r25.ga28e660
+ pkgver = v0.5.0.r26.gd153291
pkgrel = 1
url = https://github.com/getsolus/brisk-menu
arch = i686
@@ -22,7 +22,9 @@ pkgbase = brisk-menu-git
options = !libtool
options = !emptydirs
source = git+https://github.com/getsolus/brisk-menu.git
+ source = mate-122.patch
sha1sums = SKIP
+ sha1sums = 64641c7c67e357220cab52e48a7518e1d99a04b1
pkgname = brisk-menu-git
diff --git a/PKGBUILD b/PKGBUILD
index 90ee032ef47e..f1d8cdc9d3be 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -3,7 +3,7 @@
pkgname=brisk-menu-git
_gitname=brisk
-pkgver=v0.5.0.r25.ga28e660
+pkgver=v0.5.0.r26.gd153291
pkgrel=1
pkgdesc='Modern, efficient menu for the MATE Desktop Environment - git version'
arch=('i686' 'x86_64')
@@ -11,20 +11,29 @@ url='https://github.com/getsolus/brisk-menu'
license=('GPL2')
groups=('mate')
depends=('mate-panel' 'libnotify')
-makedepends=('gnome-common' 'gettext' 'itstool' 'vala>=0.36' 'meson' 'ninja' )
+makedepends=('gnome-common' 'gettext' 'itstool' 'vala>=0.36' 'meson' 'ninja')
optdepends=('mozo: for menu edition'
'menulibre: for menu edition')
options=('!libtool' '!emptydirs')
provides=('brisk-menu')
conflicts=('brisk-menu')
-source=(git+https://github.com/getsolus/brisk-menu.git)
-sha1sums=('SKIP')
+source=(git+https://github.com/getsolus/brisk-menu.git
+ mate-122.patch)
+sha1sums=('SKIP'
+ '64641c7c67e357220cab52e48a7518e1d99a04b1')
pkgver() {
cd "$srcdir/brisk-menu"
git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g'
}
+
+prepare() {
+ cd "$srcdir/brisk-menu"
+ # This patch fixes building with mate 1.22.x
+ patch -Np1 -i "${srcdir}/mate-122.patch"
+}
+
build() {
cd "$srcdir/brisk-menu"
meson --buildtype plain build --prefix=/usr
diff --git a/mate-122.patch b/mate-122.patch
new file mode 100644
index 000000000000..a8ea3104d6e8
--- /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/classic/desktop-button.h
++++ b/src/frontend/classic/desktop-button.h
+@@ -13,7 +13,6 @@
+
+ #include <glib-object.h>
+ #include <gtk/gtk.h>
+-#include <matemenu-tree.h>
+
+ #include "launcher.h"
+