Date: Wednesday, November 25, 2020 @ 22:41:02 Author: eworm Revision: 761315
upgpkg: xfmpc 0.3.0-3: build from git, fix cpu usage Added: xfmpc/trunk/0001-add-parenthesis-around-expression.patch xfmpc/trunk/0002-use-Gtk-MenuButton-for-context-button.patch Modified: xfmpc/trunk/PKGBUILD --------------------------------------------------+ 0001-add-parenthesis-around-expression.patch | 35 + 0002-use-Gtk-MenuButton-for-context-button.patch | 699 +++++++++++++++++++++ PKGBUILD | 32 3 files changed, 759 insertions(+), 7 deletions(-) Added: 0001-add-parenthesis-around-expression.patch =================================================================== --- 0001-add-parenthesis-around-expression.patch (rev 0) +++ 0001-add-parenthesis-around-expression.patch 2020-11-25 22:41:02 UTC (rev 761315) @@ -0,0 +1,35 @@ +From 1efd29280029a997ff96631fdbafd75094557615 Mon Sep 17 00:00:00 2001 +From: Christian Hesse <m...@eworm.de> +Date: Tue, 24 Nov 2020 16:40:06 +0100 +Subject: [PATCH 1/1] add parenthesis around expression + +Add parenthesis around expression before casting to boolean. This fixes: + +main-window.vala:202.8-202.57: error: Condition must be boolean + if ((bool) event.changed_mask & Gdk.WindowState.STICKY && this.visible) { + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +main-window.vala:204.9-204.73: error: Equality operation: `bool' and `Gdk.WindowState' are incompatible + if (((bool) event.new_window_state & Gdk.WindowState.STICKY) == false) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Signed-off-by: Christian Hesse <m...@eworm.de> +--- + src/main-window.vala | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/main-window.vala b/src/main-window.vala +index 8155ec1..a0755a9 100644 +--- a/src/main-window.vala ++++ b/src/main-window.vala +@@ -199,9 +199,9 @@ namespace Xfmpc { + * window-state-event signal, so here we take the value only if + * the window is visible + **/ +- if ((bool) event.changed_mask & Gdk.WindowState.STICKY && this.visible) { ++ if ((bool) (event.changed_mask & Gdk.WindowState.STICKY) && this.visible) { + bool sticky; +- if (((bool) event.new_window_state & Gdk.WindowState.STICKY) == false) ++ if (((bool) (event.new_window_state & Gdk.WindowState.STICKY)) == false) + sticky = false; + else + sticky = true; Added: 0002-use-Gtk-MenuButton-for-context-button.patch =================================================================== --- 0002-use-Gtk-MenuButton-for-context-button.patch (rev 0) +++ 0002-use-Gtk-MenuButton-for-context-button.patch 2020-11-25 22:41:02 UTC (rev 761315) @@ -0,0 +1,699 @@ +From d548f88376e0a174e68ede1926bafbbd88b5fbcf Mon Sep 17 00:00:00 2001 +From: Christian Hesse <m...@eworm.de> +Date: Wed, 25 Nov 2020 17:54:18 +0100 +Subject: [PATCH 1/1] use Gtk MenuButton for context button + +The old implementation had issues with constant re-drawing of the +button. Now that we use Gtk+ 3.x drop the old implementation and just +use upstream MenuButton. + +Fixes #7 + +Signed-off-by: Christian Hesse <m...@eworm.de> +--- + src/Makefile.am | 8 +- + src/extended-interface.vala | 104 ++++----- + src/xfce-arrow-button.c | 406 ------------------------------------ + src/xfce-arrow-button.h | 64 ------ + src/xfce-arrow-button.vapi | 15 -- + 5 files changed, 45 insertions(+), 552 deletions(-) + delete mode 100644 src/xfce-arrow-button.c + delete mode 100644 src/xfce-arrow-button.h + delete mode 100644 src/xfce-arrow-button.vapi + +diff --git a/src/Makefile.am b/src/Makefile.am +index dc0ac0a..1505c78 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -21,8 +21,7 @@ xfmpc_SOURCES = \ + preferences.vala \ + progress-bar.vala \ + main.vala \ +- mpdclient.c \ +- xfce-arrow-button.c ++ mpdclient.c + + xfmpc_VALAFLAGS = \ + --header=xfmpc.h \ +@@ -30,8 +29,7 @@ xfmpc_VALAFLAGS = \ + --vapidir=$(top_srcdir)/third-party \ + --pkg=libxfce4ui-2 \ + --pkg=config \ +- --pkg=mpdclient \ +- --pkg=xfce-arrow-button ++ --pkg=mpdclient + + xfmpc_CFLAGS = \ + @GTHREAD_CFLAGS@ \ +@@ -54,8 +52,6 @@ BUILT_SOURCES = xfmpc_vala.stamp + EXTRA_DIST = \ + mpdclient.h \ + mpdclient.vapi \ +- xfce-arrow-button.h \ +- xfce-arrow-button.vapi \ + xfmpc.h + + # vi:set ts=8 sw=8 noet ai nocindent syntax=automake: +diff --git a/src/extended-interface.vala b/src/extended-interface.vala +index 8cc1687..23d87cc 100644 +--- a/src/extended-interface.vala ++++ b/src/extended-interface.vala +@@ -26,7 +26,7 @@ namespace Xfmpc { + private unowned Xfmpc.Mpdclient mpdclient; + private unowned Xfmpc.Preferences preferences; + +- private static Xfce.ArrowButton context_button; ++ private Gtk.MenuButton context_button; + private Gtk.ListStore list_store; + private Gtk.ComboBox combobox; + private Gtk.Notebook notebook; +@@ -73,11 +73,48 @@ namespace Xfmpc { + image = new Gtk.Image.from_icon_name ("view-refresh", Gtk.IconSize.MENU); + button.set_image (image); + +- this.context_button = new Xfce.ArrowButton (Gtk.ArrowType.DOWN); +- ((Widget) this.context_button).set_tooltip_text (_("Context Menu")); +- ((Button) this.context_button).pressed.connect (popup_context_menu); +- ((Button) this.context_button).clicked.connect (cb_context_menu_clicked); +- hbox.pack_start (((Widget) this.context_button), false, false, 0); ++ context_button = new Gtk.MenuButton (); ++ context_button.set_tooltip_text (_("Context Menu")); ++ context_button.pressed.connect (popup_context_menu); ++ hbox.pack_start (context_button, false, false, 0); ++ ++ context_menu = new Gtk.Menu (); ++ context_menu.deactivate.connect (cb_context_menu_deactivate); ++ ++ repeat = new Gtk.CheckMenuItem.with_label (_("Repeat")); ++ repeat.activate.connect (cb_repeat_switch); ++ context_menu.append (repeat); ++ ++ random = new Gtk.CheckMenuItem.with_label (_("Random")); ++ random.activate.connect (cb_random_switch); ++ context_menu.append (random); ++ ++ single = new Gtk.CheckMenuItem.with_label (_("Single Mode")); ++ single.activate.connect (cb_single_switch); ++ context_menu.append (single); ++ ++ consume = new Gtk.CheckMenuItem.with_label (_("Consume Mode")); ++ consume.toggled.connect (cb_consume_switch); ++ context_menu.append (consume); ++ ++ var separator = new Gtk.SeparatorMenuItem (); ++ context_menu.append (separator); ++ ++ var imi = new Gtk.MenuItem.with_mnemonic (_("_Preferences")); ++ imi.activate.connect (cb_preferences); ++ context_menu.append (imi); ++ ++ imi = new Gtk.MenuItem.with_mnemonic (_("_Shortcuts")); ++ imi.activate.connect (cb_shortcuts); ++ context_menu.append (imi); ++ ++ imi = new Gtk.MenuItem.with_mnemonic (_("_About")); ++ imi.activate.connect (cb_about); ++ context_menu.append (imi); ++ ++ context_menu.show_all (); ++ ++ context_button.set_popup (context_menu); + + this.list_store = new Gtk.ListStore (Columns.N_COLUMNS, + typeof (string), +@@ -128,58 +165,10 @@ namespace Xfmpc { + } + + private void popup_context_menu () { +- if (this.context_menu == null) +- this.context_menu_new ((Gtk.Widget) this.context_button); +- + this.repeat.set_active (this.mpdclient.get_repeat ()); + this.random.set_active (this.mpdclient.get_random ()); + this.single.set_active (this.mpdclient.get_single ()); + this.consume.set_active (this.mpdclient.get_consume ()); +- +- this.context_menu.popup_at_widget ((Gtk.Widget) this.context_button, +- Gdk.Gravity.SOUTH_WEST, +- Gdk.Gravity.NORTH_WEST, +- null); +- } +- +- private void context_menu_new (Gtk.Widget attach_widget) { +- this.context_menu = new Gtk.Menu (); +- this.context_menu.set_screen (attach_widget.get_screen ()); +- this.context_menu.attach_to_widget (attach_widget, (Gtk.MenuDetachFunc) menu_detach); +- this.context_menu.deactivate.connect (cb_context_menu_deactivate); +- +- this.repeat = new Gtk.CheckMenuItem.with_label (_("Repeat")); +- this.repeat.activate.connect (cb_repeat_switch); +- this.context_menu.append (this.repeat); +- +- this.random = new Gtk.CheckMenuItem.with_label (_("Random")); +- this.random.activate.connect (cb_random_switch); +- this.context_menu.append (this.random); +- +- this.single = new Gtk.CheckMenuItem.with_label (_("Single Mode")); +- this.single.activate.connect (cb_single_switch); +- this.context_menu.append (this.single); +- +- this.consume = new Gtk.CheckMenuItem.with_label (_("Consume Mode")); +- this.consume.toggled.connect (cb_consume_switch); +- this.context_menu.append (this.consume); +- +- var separator = new Gtk.SeparatorMenuItem (); +- this.context_menu.append (separator); +- +- var imi = new Gtk.MenuItem.with_mnemonic (_("_Preferences")); +- imi.activate.connect (cb_preferences); +- this.context_menu.append (imi); +- +- var mi = new Gtk.MenuItem.with_mnemonic (_("_Shortcuts")); +- mi.activate.connect (cb_shortcuts); +- this.context_menu.append (mi); +- +- imi = new Gtk.MenuItem.with_mnemonic (_("_About")); +- imi.activate.connect (cb_about); +- this.context_menu.append (imi); +- +- this.context_menu.show_all (); + } + + private void menu_detach (Gtk.Widget attach_widget, Gtk.Menu menu) { +@@ -211,13 +200,6 @@ namespace Xfmpc { + this.notebook.set_current_page (i); + } + +- private void cb_context_menu_clicked () { +- if (!((Gtk.ToggleButton) this.context_button).get_active ()) +- return; +- +- popup_context_menu (); +- } +- + private void cb_context_menu_deactivate () { + ((Gtk.ToggleButton) this.context_button).set_active (false); + } +diff --git a/src/xfce-arrow-button.c b/src/xfce-arrow-button.c +deleted file mode 100644 +index cd05f93..0000000 +--- a/src/xfce-arrow-button.c ++++ /dev/null +@@ -1,406 +0,0 @@ +-/* +- * Copyright (c) 2004-2007 Jasper Huijsmans <jas...@xfce.org> +- * +- * This library is free software; you can redistribute it and/or +- * modify it under the terms of the GNU Library General Public +- * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. +- * +- * This library is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- * Library General Public License for more details. +- * +- * You should have received a copy of the GNU Library General Public +- * License along with this library; if not, write to the +- * Free Software Foundation, Inc., 59 Temple Place - Suite 330, +- * Boston, MA 02111-1307, USA. +- */ +- +-#ifdef HAVE_CONFIG_H +-#include <config.h> +-#endif +- +-#ifdef HAVE_STDIO_H +-#include <stdio.h> +-#endif +-#ifdef HAVE_STRING_H +-#include <string.h> +-#endif +- +-#include <gtk/gtk.h> +-#include "xfce-arrow-button.h" +- +-#define ARROW_WIDTH 8 +-#define ARROW_PADDING 2 +-#define DEFAULT_ARROW_TYPE GTK_ARROW_UP +- +- +-#ifndef _ +-#define _(x) (x) +-#endif +- +-enum +-{ +- ARROW_TYPE_CHANGED, +- LAST_SIGNAL +-}; +- +-enum +-{ +- PROP_0, +- PROP_ARROW_TYPE +-}; +- +-typedef struct { +- gint x; +- gint y; +-} xfce_arrow_button_thickness; +- +-static void xfce_arrow_button_class_init (XfceArrowButtonClass *klass); +-static void xfce_arrow_button_init (XfceArrowButton *button); +-static void xfce_arrow_button_set_property (GObject *object, +- guint prop_id, +- const GValue *value, +- GParamSpec *pspec); +-static void xfce_arrow_button_get_property (GObject *object, +- guint prop_id, +- GValue *value, +- GParamSpec *pspec); +-static gboolean xfce_arrow_button_draw (GtkWidget *widget, +- cairo_t *cr); +-static void xfce_arrow_button_add (GtkContainer *container, +- GtkWidget *child); +-static void xfce_arrow_button_get_thickness (GtkStyleContext *context, +- xfce_arrow_button_thickness *thickness); +-static GType xfce_arrow_button_child_type (GtkContainer *container); +-static void xfce_arrow_button_get_preferred_width (GtkWidget *widget, +- gint *minimal_width, +- gint *natural_width); +-static void xfce_arrow_button_get_preferred_height (GtkWidget *widget, +- gint *minimal_height, +- gint *natural_height); +- +- +-/* global vars */ +-static GtkToggleButtonClass *parent_class = NULL; +-static guint arrow_button_signals[LAST_SIGNAL] = { 0 }; +- +- +- +-GType +-xfce_arrow_button_get_type (void) +-{ +- static GType type = G_TYPE_INVALID; +- +- if (G_UNLIKELY (type == G_TYPE_INVALID)) +- { +- static const GTypeInfo info = +- { +- sizeof (XfceArrowButtonClass), +- (GBaseInitFunc) NULL, +- (GBaseFinalizeFunc) NULL, +- (GClassInitFunc) xfce_arrow_button_class_init, +- (GClassFinalizeFunc) NULL, +- NULL, +- sizeof (XfceArrowButton), +- 0, +- (GInstanceInitFunc) xfce_arrow_button_init, +- NULL +- }; +- type = g_type_register_static (GTK_TYPE_TOGGLE_BUTTON, "XfceArrowButton", &info, 0); +- } +- +- return type; +-} +- +- +- +-static void +-xfce_arrow_button_class_init (XfceArrowButtonClass * klass) +-{ +- GObjectClass *gobject_class; +- GtkWidgetClass *widget_class; +- GtkContainerClass *container_class; +- +- parent_class = g_type_class_peek_parent (klass); +- +- gobject_class = G_OBJECT_CLASS (klass); +- gobject_class->get_property = xfce_arrow_button_get_property; +- gobject_class->set_property = xfce_arrow_button_set_property; +- +- widget_class = GTK_WIDGET_CLASS (klass); +- widget_class->draw = xfce_arrow_button_draw; +- widget_class->get_preferred_width = xfce_arrow_button_get_preferred_width; +- widget_class->get_preferred_height = xfce_arrow_button_get_preferred_height; +- +- container_class = GTK_CONTAINER_CLASS (klass); +- container_class->add = xfce_arrow_button_add; +- container_class->child_type = xfce_arrow_button_child_type; +- +- /* signals */ +- +- /** +- * XfceArrowButton::arrow-type-changed +- * @button: the object which emitted the signal +- * @type: the new #GtkArrowType of the button +- * +- * Emitted when the arrow direction of the menu button changes. +- * This value also determines the direction of the popup menu. +- **/ +- arrow_button_signals[ARROW_TYPE_CHANGED] = +- g_signal_new ("arrow-type-changed", +- G_OBJECT_CLASS_TYPE (klass), +- G_SIGNAL_RUN_FIRST, +- G_STRUCT_OFFSET (XfceArrowButtonClass, arrow_type_changed), +- NULL, NULL, +- g_cclosure_marshal_VOID__ENUM, +- G_TYPE_NONE, 1, GTK_TYPE_ARROW_TYPE); +- +- /* properties */ +- +- /** +- * XfceArrowButton:arrow-type +- * +- * The arrow type of the button. This value also determines the direction +- * of the popup menu. +- **/ +- g_object_class_install_property (gobject_class, +- PROP_ARROW_TYPE, +- g_param_spec_enum ("arrow-type", +- "Arrow type", +- "The arrow type of the menu button", +- GTK_TYPE_ARROW_TYPE, +- GTK_ARROW_UP, +- G_PARAM_READWRITE)); +-} +- +- +- +-static void +-xfce_arrow_button_init (XfceArrowButton * arrow_button) +-{ +- +-} +- +- +- +-static void +-xfce_arrow_button_set_property (GObject *object, +- guint prop_id, +- const GValue *value, +- GParamSpec *pspec) +-{ +- XfceArrowButton *button = XFCE_ARROW_BUTTON (object); +- +- switch (prop_id) +- { +- case PROP_ARROW_TYPE: +- xfce_arrow_button_set_arrow_type (button, g_value_get_enum (value)); +- break; +- default: +- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); +- break; +- } +-} +- +- +- +-static void +-xfce_arrow_button_get_property (GObject *object, +- guint prop_id, +- GValue *value, +- GParamSpec *pspec) +-{ +- XfceArrowButton *button = XFCE_ARROW_BUTTON (object); +- +- switch (prop_id) +- { +- case PROP_ARROW_TYPE: +- g_value_set_enum (value, button->arrow_type); +- break; +- default: +- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); +- break; +- } +-} +- +- +- +-static gboolean +-xfce_arrow_button_draw (GtkWidget *widget, +- cairo_t *cr) +-{ +- gint x, y, w; +- GtkStyleContext *context; +- xfce_arrow_button_thickness thickness; +- GtkAllocation allocation; +- +- if (G_LIKELY (gtk_widget_is_drawable (widget))) +- { +- context = gtk_widget_get_style_context (widget); +- xfce_arrow_button_get_thickness (context, &thickness); +- gtk_widget_get_allocation (widget, &allocation); +- +- w = MIN (allocation.height - 2 * thickness.y, +- allocation.width - 2 * thickness.x); +- w = MIN (w, ARROW_WIDTH); +- +- x = (allocation.width - w) / 2; +- y = (allocation.height - w) / 2; +- +- GTK_WIDGET_CLASS (parent_class)->draw (widget, cr); +- +- gtk_style_context_save (context); +- gtk_style_context_set_state (context, gtk_widget_get_state_flags (widget)); +- +- gtk_render_arrow (context, cr, G_PI, x, y, w); +- +- gtk_style_context_restore (context); +- } +- +- return TRUE; +-} +- +- +- +-static void +-xfce_arrow_button_get_preferred_width (GtkWidget *widget, +- gint *minimal_width, +- gint *natural_width) +-{ +- GtkStyleContext *context; +- xfce_arrow_button_thickness thickness; +- gint size; +- +- context = gtk_widget_get_style_context (widget); +- xfce_arrow_button_get_thickness (context, &thickness); +- +- size = ARROW_WIDTH + ARROW_PADDING + +- 2 * MAX (thickness.x, thickness.y); +- +- *minimal_width = *natural_width = size; +-} +- +- +- +-static void +-xfce_arrow_button_get_preferred_height (GtkWidget *widget, +- gint *minimal_height, +- gint *natural_height) +-{ +- GtkStyleContext *context; +- xfce_arrow_button_thickness thickness; +- gint size; +- +- context = gtk_widget_get_style_context (widget); +- xfce_arrow_button_get_thickness (context, &thickness); +- +- size = ARROW_WIDTH + ARROW_PADDING + +- 2 * MAX (thickness.x, thickness.y); +- +- *minimal_height = *natural_height = size; +-} +- +- +- +-static void +-xfce_arrow_button_get_thickness (GtkStyleContext *context, xfce_arrow_button_thickness *thickness) +-{ +- GtkBorder border; +- GtkBorder margin; +- GtkBorder padding; +- gint xthickness; +- gint ythickness; +- +- gtk_style_context_get_border (context, GTK_STATE_FLAG_NORMAL, &border); +- gtk_style_context_get_margin (context, GTK_STATE_FLAG_NORMAL, &margin); +- gtk_style_context_get_padding (context, GTK_STATE_FLAG_NORMAL, &padding); +- +- thickness->x = MAX (border.left + margin.left + padding.left, +- border.right + margin.right + padding.right); +- thickness->y = MAX (border.top + margin.top + padding.top, +- border.bottom + margin.bottom + padding.bottom); +-} +- +- +- +-static void +-xfce_arrow_button_add (GtkContainer *container, +- GtkWidget *child) +-{ +- g_warning ("XfceArrowButton cannot contain any children"); +-} +- +- +- +-static GType +-xfce_arrow_button_child_type (GtkContainer *container) +-{ +- return G_TYPE_NONE; +-} +- +- +- +-/* public interface */ +- +-/** +- * xfce_arrow_button_new: +- * @type : #GtkArrowType for the arrow button +- * +- * Creates a new #XfceArrowButton widget. +- * +- * Returns: The newly created #XfceArrowButton widget. +- **/ +-GtkWidget * +-xfce_arrow_button_new (GtkArrowType type) +-{ +- return g_object_new (XFCE_TYPE_ARROW_BUTTON, "arrow-type", type, NULL); +-} +- +- +- +-/** +- * xfce_arrow_button_set_arrow_type: +- * @button : a #XfceArrowButton +- * @type : a valid #GtkArrowType +- * +- * Sets the arrow type for @button. +- **/ +-void +-xfce_arrow_button_set_arrow_type (XfceArrowButton *button, +- GtkArrowType type) +-{ +- g_return_if_fail (XFCE_IS_ARROW_BUTTON (button)); +- +- button->arrow_type = type; +- +- g_signal_emit (button, arrow_button_signals[ARROW_TYPE_CHANGED], 0, type); +- +- g_object_notify (G_OBJECT (button), "arrow_type"); +- +- gtk_widget_queue_draw (GTK_WIDGET (button)); +-} +- +- +- +-/** +- * xfce_arrow_button_get_arrow_type: +- * @button : a #XfceArrowButton +- * +- * Returns the value of the ::arrow-type property. +- * +- * Returns: the #GtkArrowType of @button. +- **/ +-GtkArrowType +-xfce_arrow_button_get_arrow_type (XfceArrowButton *button) +-{ +- g_return_val_if_fail (XFCE_IS_ARROW_BUTTON (button), DEFAULT_ARROW_TYPE); +- +- return button->arrow_type; +-} +- +- +- +-#define __XFCE_ARROW_BUTTON_C__ +- +diff --git a/src/xfce-arrow-button.h b/src/xfce-arrow-button.h +deleted file mode 100644 +index 328320e..0000000 +--- a/src/xfce-arrow-button.h ++++ /dev/null +@@ -1,64 +0,0 @@ +-/* +- * Copyright (c) 2004-2007 Jasper Huijsmans <jas...@xfce.org> +- * +- * This library is free software; you can redistribute it and/or +- * modify it under the terms of the GNU Library General Public +- * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. +- * +- * This library is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- * Library General Public License for more details. +- * +- * You should have received a copy of the GNU Library General Public +- * License along with this library; if not, write to the +- * Free Software Foundation, Inc., 59 Temple Place - Suite 330, +- * Boston, MA 02111-1307, USA. +- */ +- +-#ifndef __XFCE_ARROW_BUTTON_H__ +-#define __XFCE_ARROW_BUTTON_H__ +- +-#include <gtk/gtkenums.h> +-#include <gtk/gtktogglebutton.h> +- +-G_BEGIN_DECLS +- +-typedef struct _XfceArrowButton XfceArrowButton; +-typedef struct _XfceArrowButtonClass XfceArrowButtonClass; +- +-#define XFCE_TYPE_ARROW_BUTTON (xfce_arrow_button_get_type ()) +-#define XFCE_ARROW_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), XFCE_TYPE_ARROW_BUTTON, XfceArrowButton)) +-#define XFCE_ARROW_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), XFCE_TYPE_ARROW_BUTTON, XfceArrowButtonClass)) +-#define XFCE_IS_ARROW_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XFCE_TYPE_ARROW_BUTTON)) +-#define XFCE_IS_ARROW_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XFCE_TYPE_ARROW_BUTTON)) +-#define XFCE_ARROW_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), XFCE_TYPE_ARROW_BUTTON, XfceArrowButtonClass)) +- +-struct _XfceArrowButton +-{ +- GtkToggleButton parent; +- GtkArrowType arrow_type; +-}; +- +-struct _XfceArrowButtonClass +-{ +- GtkToggleButtonClass parent_class; +- +- /* signals */ +- void (*arrow_type_changed) (GtkWidget *widget, +- GtkArrowType type); +-}; +- +-GType xfce_arrow_button_get_type (void) G_GNUC_CONST; +- +-GtkWidget *xfce_arrow_button_new (GtkArrowType type) G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT; +- +-void xfce_arrow_button_set_arrow_type (XfceArrowButton *button, +- GtkArrowType type); +- +-GtkArrowType xfce_arrow_button_get_arrow_type (XfceArrowButton *button); +- +-G_END_DECLS +- +-#endif /* !__XFCE_ARROW_BUTTON_H__ */ +diff --git a/src/xfce-arrow-button.vapi b/src/xfce-arrow-button.vapi +deleted file mode 100644 +index 7fd269c..0000000 +--- a/src/xfce-arrow-button.vapi ++++ /dev/null +@@ -1,15 +0,0 @@ +-/* xfce-arrow-button.vapi generated by vapigen, do not modify. */ +- +-[CCode (cprefix = "Xfce", lower_case_cprefix = "xfce_")] +-namespace Xfce { +- [CCode (unref_function = "", free_function = "", cheader_filename = "xfce-arrow-button.h")] +- [Compact] +- public class ArrowButton { +- public Gtk.ArrowType arrow_type; +- public weak Gtk.ToggleButton parent; +- public Gtk.ArrowType get_arrow_type (); +- [CCode (type = "GtkWidget*", has_construct_function = false)] +- public ArrowButton (Gtk.ArrowType type); +- public void set_arrow_type (Gtk.ArrowType type); +- } +-} Modified: PKGBUILD =================================================================== --- PKGBUILD 2020-11-25 22:23:26 UTC (rev 761314) +++ PKGBUILD 2020-11-25 22:41:02 UTC (rev 761315) @@ -3,25 +3,43 @@ # Contributor: Marc St-Laurent <mstlaur...@canada.com> pkgname=xfmpc +_tag='58f79c46a632f321b8ac8c3d7fdcf6c8e0369dd0' # git rev-parse ${pkgver} pkgver=0.3.0 -pkgrel=2 +pkgrel=3 pkgdesc="A graphical GTK+ MPD client focusing on low footprint" arch=('x86_64') url="https://goodies.xfce.org/projects/applications/xfmpc/" license=('GPL') depends=('libxfce4ui' 'libmpd') -makedepends=('intltool') -source=("https://archive.xfce.org/src/apps/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2") -sha256sums=('c76e2a88dc3e1d345da7a5c68fa39981494c2b40033748efcac54411c9e65689') +makedepends=('git' 'xfce4-dev-tools' 'vala') +source=("git+https://gitlab.xfce.org/apps/${pkgname}.git#tag=${_tag}" + '0001-add-parenthesis-around-expression.patch' + '0002-use-Gtk-MenuButton-for-context-button.patch') +sha256sums=('SKIP' + 'cbb647270655347477ca34c6abd19ca92baa3cf5a7118c48c676303870ad8683' + '6a7a9914c72f84da45710f1faf98cd06c0127f8559a26695427411e0f3b90a58') +prepare() { + cd "${srcdir}/${pkgname}" + + git cherry-pick -n \ + cf6986a4fbc34203f8ca52ccb9c11dd2eb7c8def + + patch -Np1 < ../0001-add-parenthesis-around-expression.patch + patch -Np1 < ../0002-use-Gtk-MenuButton-for-context-button.patch +} + build() { - cd "${srcdir}/${pkgname}-${pkgver}" - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}" + + ./autogen.sh \ + --prefix=/usr make } package() { - cd "${srcdir}/${pkgname}-${pkgver}" + cd "${srcdir}/${pkgname}" + make DESTDIR="${pkgdir}" install }