[Xfce4-commits] [apps/xfdashboard] 05/05: Make use of new pop-up menu in quicklaunch

noreply at xfce.org noreply at xfce.org
Tue Aug 2 09:03:11 CEST 2016


This is an automated email from the git hooks/post-receive script.

nomad pushed a commit to branch master
in repository apps/xfdashboard.

commit 07df9736012cf052cb3f8d5cf66bebc1e821ffef
Author: Stephan Haller <nomad at froevel.de>
Date:   Tue Aug 2 09:02:41 2016 +0200

    Make use of new pop-up menu in quicklaunch
---
 data/themes/xfdashboard/xfdashboard.css |   6 +
 libxfdashboard/quicklaunch.c            | 438 ++++++++++++++++++++++++++++++--
 2 files changed, 428 insertions(+), 16 deletions(-)

diff --git a/data/themes/xfdashboard/xfdashboard.css b/data/themes/xfdashboard/xfdashboard.css
index 294a3d8..9251f9f 100644
--- a/data/themes/xfdashboard/xfdashboard.css
+++ b/data/themes/xfdashboard/xfdashboard.css
@@ -580,3 +580,9 @@ XfdashboardSearchView XfdashboardSearchResultContainer XfdashboardButton:selecte
 	margin-top: 2.0;
 	margin-bottom: 2.0;
 }
+
+.popup-menu.popup-menu-source-XfdashboardQuicklaunch
+{
+	show-title: true;
+	show-title-icon: true;
+}
diff --git a/libxfdashboard/quicklaunch.c b/libxfdashboard/quicklaunch.c
index 1b5b8ff..7dab769 100644
--- a/libxfdashboard/quicklaunch.c
+++ b/libxfdashboard/quicklaunch.c
@@ -25,6 +25,7 @@
 #include "config.h"
 #endif
 
+
 #include <libxfdashboard/quicklaunch.h>
 
 #include <glib/gi18n-lib.h>
@@ -38,14 +39,17 @@
 #include <libxfdashboard/drag-action.h>
 #include <libxfdashboard/drop-action.h>
 #include <libxfdashboard/applications-view.h>
-#include <libxfdashboard/utils.h>
 #include <libxfdashboard/tooltip-action.h>
 #include <libxfdashboard/focusable.h>
 #include <libxfdashboard/marshal.h>
 #include <libxfdashboard/desktop-app-info.h>
 #include <libxfdashboard/application-database.h>
 #include <libxfdashboard/application-tracker.h>
+#include <libxfdashboard/window-tracker.h>
 #include <libxfdashboard/window-tracker-window.h>
+#include <libxfdashboard/click-action.h>
+#include <libxfdashboard/popup-menu.h>
+#include <libxfdashboard/utils.h>
 #include <libxfdashboard/compat.h>
 
 
@@ -128,6 +132,7 @@ enum
 
 static guint XfdashboardQuicklaunchSignals[SIGNAL_LAST]={ 0, };
 
+
 /* IMPLEMENTATION: Private variables and methods */
 #define FAVOURITES_XFCONF_PROP				"/favourites"
 
@@ -411,6 +416,406 @@ static void _xfdashboard_quicklaunch_on_favourite_clicked(XfdashboardQuicklaunch
 	}
 }
 
+/* User selected to activate a window at pop-up menu */
+static void _xfdashboard_quicklaunch_on_favourite_popup_menu_item_activate_window(XfdashboardPopupMenu *inPopupMenu,
+																					ClutterActor *inMenuItem,
+																					gpointer inUserData)
+{
+	XfdashboardWindowTrackerWindow		*window;
+
+	g_return_if_fail(XFDASHBOARD_IS_POPUP_MENU(inPopupMenu));
+	g_return_if_fail(XFDASHBOARD_IS_BUTTON(inMenuItem));
+	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(inUserData));
+
+	window=XFDASHBOARD_WINDOW_TRACKER_WINDOW(inUserData);
+
+	/* Activate window */
+	xfdashboard_window_tracker_window_activate(window);
+
+	/* Quit application */
+	xfdashboard_application_suspend_or_quit(NULL);
+}
+
+/* User selected to open a new window or to launch that application at pop-up menu */
+static void _xfdashboard_quicklaunch_on_favourite_popup_menu_item_launch(XfdashboardPopupMenu *inPopupMenu,
+																			ClutterActor *inMenuItem,
+																			gpointer inUserData)
+{
+	GAppInfo							*appInfo;
+	XfdashboardApplicationTracker		*appTracker;
+	GIcon								*gicon;
+	const gchar							*iconName;
+
+	g_return_if_fail(XFDASHBOARD_IS_POPUP_MENU(inPopupMenu));
+	g_return_if_fail(XFDASHBOARD_IS_BUTTON(inMenuItem));
+	g_return_if_fail(G_IS_APP_INFO(inUserData));
+
+	appInfo=G_APP_INFO(inUserData);
+	iconName=NULL;
+
+	/* Get icon of application */
+	gicon=g_app_info_get_icon(appInfo);
+	if(gicon) iconName=g_icon_to_string(gicon);
+
+	/* Check if we should launch that application or to open a new window */
+	appTracker=xfdashboard_application_tracker_get_default();
+	if(!xfdashboard_application_tracker_is_running_by_app_info(appTracker, appInfo))
+	{
+		GAppLaunchContext			*context;
+		GError						*error;
+
+		/* Create context to start application at */
+		context=xfdashboard_create_app_context(NULL);
+
+		/* Try to launch application */
+		error=NULL;
+		if(!g_app_info_launch(appInfo, NULL, context, &error))
+		{
+			/* Show notification about failed application launch */
+			xfdashboard_notify(CLUTTER_ACTOR(inPopupMenu),
+								iconName,
+								_("Launching application '%s' failed: %s"),
+								g_app_info_get_display_name(appInfo),
+								(error && error->message) ? error->message : _("unknown error"));
+			g_warning(_("Launching application '%s' failed: %s"),
+						g_app_info_get_display_name(appInfo),
+						(error && error->message) ? error->message : _("unknown error"));
+			if(error) g_error_free(error);
+		}
+			else
+			{
+				/* Show notification about successful application launch */
+				xfdashboard_notify(CLUTTER_ACTOR(inPopupMenu),
+									iconName,
+									_("Application '%s' launched"),
+									g_app_info_get_display_name(appInfo));
+
+				/* Emit signal for successful application launch */
+				g_signal_emit_by_name(xfdashboard_application_get_default(), "application-launched", appInfo);
+
+				/* Quit application */
+				xfdashboard_application_suspend_or_quit(NULL);
+			}
+
+		/* Release allocated resources */
+		g_object_unref(context);
+	}
+
+	/* Release allocated resources */
+	g_object_unref(appTracker);
+	g_object_unref(gicon);
+}
+
+/* User selected to remove application from favourites via pop-up menu */
+static void _xfdashboard_quicklaunch_on_favourite_popup_menu_item_remove_from_favourite(XfdashboardPopupMenu *inPopupMenu,
+																						ClutterActor *inMenuItem,
+																						gpointer inUserData)
+{
+	XfdashboardApplicationButton		*appButton;
+	GAppInfo							*appInfo;
+	ClutterActor						*actor;
+	XfdashboardQuicklaunch				*self;
+	XfdashboardQuicklaunchPrivate		*priv;
+
+	g_return_if_fail(XFDASHBOARD_IS_POPUP_MENU(inPopupMenu));
+	g_return_if_fail(XFDASHBOARD_IS_BUTTON(inMenuItem));
+	g_return_if_fail(XFDASHBOARD_IS_APPLICATION_BUTTON(inUserData));
+
+	appButton=XFDASHBOARD_APPLICATION_BUTTON(inUserData);
+
+	/* Find quicklaunch for application button */
+	actor=CLUTTER_ACTOR(appButton);
+	do
+	{
+		actor=clutter_actor_get_parent(actor);
+	}
+	while(actor && !XFDASHBOARD_IS_QUICKLAUNCH(actor));
+
+	if(!actor)
+	{
+		g_critical(_("Cannot find quicklaunch for application button."));
+		return;
+	}
+
+	self=XFDASHBOARD_QUICKLAUNCH(actor);
+	priv=self->priv;
+
+	/* Notify about removal of favourite icon */
+	xfdashboard_notify(CLUTTER_ACTOR(self),
+						xfdashboard_application_button_get_icon_name(appButton),
+						_("Favourite '%s' removed"),
+						xfdashboard_application_button_get_display_name(appButton));
+
+	/* Emit signal and re-add removed favourite as dynamically added
+	 * application button for non-favourites apps when it is still running.
+	 */
+	appInfo=xfdashboard_application_button_get_app_info(appButton);
+	if(appInfo)
+	{
+		/* Emit signal */
+		g_signal_emit(self, XfdashboardQuicklaunchSignals[SIGNAL_FAVOURITE_REMOVED], 0, appInfo);
+
+		/* Re-add removed favourite as dynamically added application button
+		 * for non-favourites apps when it is still running.
+		 */
+		if(xfdashboard_application_tracker_is_running_by_app_info(priv->appTracker, appInfo))
+		{
+			ClutterActor				*newAppButton;
+
+			newAppButton=_xfdashboard_quicklaunch_create_dynamic_actor(self, appInfo);
+			clutter_actor_show(newAppButton);
+			clutter_actor_add_child(CLUTTER_ACTOR(self), newAppButton);
+		}
+	}
+
+	/* Destroy favourite icon before updating property */
+	clutter_actor_destroy(CLUTTER_ACTOR(appButton));
+
+	/* Update favourites from icon order */
+	_xfdashboard_quicklaunch_update_property_from_icons(self);
+}
+
+/* User selected to add application to favourites via pop-up menu */
+static void _xfdashboard_quicklaunch_on_favourite_popup_menu_item_add_to_favourite(XfdashboardPopupMenu *inPopupMenu,
+																					ClutterActor *inMenuItem,
+																					gpointer inUserData)
+{
+	XfdashboardApplicationButton		*appButton;
+	GAppInfo							*appInfo;
+	ClutterActor						*actor;
+	XfdashboardQuicklaunch				*self;
+	XfdashboardQuicklaunchPrivate		*priv;
+
+	g_return_if_fail(XFDASHBOARD_IS_POPUP_MENU(inPopupMenu));
+	g_return_if_fail(XFDASHBOARD_IS_BUTTON(inMenuItem));
+	g_return_if_fail(XFDASHBOARD_IS_APPLICATION_BUTTON(inUserData));
+
+	appButton=XFDASHBOARD_APPLICATION_BUTTON(inUserData);
+
+	/* Find quicklaunch for application button */
+	actor=CLUTTER_ACTOR(appButton);
+	do
+	{
+		actor=clutter_actor_get_parent(actor);
+	}
+	while(actor && !XFDASHBOARD_IS_QUICKLAUNCH(actor));
+
+	if(!actor)
+	{
+		g_critical(_("Cannot find quicklaunch for application button."));
+		return;
+	}
+
+	self=XFDASHBOARD_QUICKLAUNCH(actor);
+	priv=self->priv;
+
+	/* Check if application button provides all information needed to add favourite
+	 * and also check for duplicates.
+	 */
+	appInfo=xfdashboard_application_button_get_app_info(XFDASHBOARD_APPLICATION_BUTTON(appButton));
+	if(appInfo &&
+		!_xfdashboard_quicklaunch_has_favourite_appinfo(self, appInfo))
+	{
+		ClutterActor					*favouriteActor;
+
+		/* If an actor for current selection to add to favourites already exists,
+		 * destroy and remove it regardless if it an actor or a favourite app or
+		 * dynamic non-favourite app. It will be re-added later.
+		 */
+		favouriteActor=_xfdashboard_quicklaunch_get_actor_for_appinfo(self, appInfo);
+		if(favouriteActor)
+		{
+			/* Remove existing actor from this quicklaunch */
+			clutter_actor_destroy(favouriteActor);
+		}
+
+		/* Now (re-)add current selection to favourites but hidden as
+		 * it will become visible and properly set up when function
+		 * _xfdashboard_quicklaunch_update_property_from_icons is called.
+		 */
+		favouriteActor=xfdashboard_application_button_new_from_app_info(appInfo);
+		clutter_actor_hide(favouriteActor);
+		xfdashboard_stylable_add_class(XFDASHBOARD_STYLABLE(favouriteActor), "favourite-app");
+		clutter_actor_insert_child_below(CLUTTER_ACTOR(self), favouriteActor, priv->separatorFavouritesToDynamic);
+
+		/* Update favourites from icon order */
+		_xfdashboard_quicklaunch_update_property_from_icons(self);
+
+		/* Notify about new favourite */
+		xfdashboard_notify(CLUTTER_ACTOR(self),
+							xfdashboard_application_button_get_icon_name(XFDASHBOARD_APPLICATION_BUTTON(favouriteActor)),
+							_("Favourite '%s' added"),
+							xfdashboard_application_button_get_display_name(XFDASHBOARD_APPLICATION_BUTTON(favouriteActor)));
+
+		g_signal_emit(self, XfdashboardQuicklaunchSignals[SIGNAL_FAVOURITE_ADDED], 0, appInfo);
+	}
+}
+
+/* A right-click might have happened on an application icon (favourite) in quicklaunch */
+static void _xfdashboard_quicklaunch_on_favourite_popup_menu(XfdashboardQuicklaunch *self,
+																ClutterActor *inActor,
+																gpointer inUserData)
+{
+	XfdashboardQuicklaunchPrivate				*priv;
+	XfdashboardApplicationButton				*appButton;
+	XfdashboardClickAction						*action;
+
+	g_return_if_fail(XFDASHBOARD_IS_QUICKLAUNCH(self));
+	g_return_if_fail(XFDASHBOARD_IS_APPLICATION_BUTTON(inActor));
+	g_return_if_fail(XFDASHBOARD_IS_CLICK_ACTION(inUserData));
+
+	priv=self->priv;
+	appButton=XFDASHBOARD_APPLICATION_BUTTON(inActor);
+	action=XFDASHBOARD_CLICK_ACTION(inUserData);
+
+	/* Check if right button was used when the application button was clicked */
+	if(xfdashboard_click_action_get_button(action)==XFDASHBOARD_CLICK_ACTION_RIGHT_BUTTON)
+	{
+		ClutterActor							*popup;
+		ClutterActor							*menuItem;
+		GAppInfo								*appInfo;
+		const GList								*appWindows;
+
+		/* Get app info for application button as it is needed most the time */
+		appInfo=xfdashboard_application_button_get_app_info(appButton);
+		if(!appInfo)
+		{
+			g_critical(_("No application information available for clicked application button."));
+			return;
+		}
+
+		/* Create pop-up menu */
+		popup=xfdashboard_popup_menu_new_for_source(CLUTTER_ACTOR(self));
+		xfdashboard_popup_menu_set_destroy_on_cancel(XFDASHBOARD_POPUP_MENU(popup), TRUE);
+		xfdashboard_popup_menu_set_title(XFDASHBOARD_POPUP_MENU(popup), g_app_info_get_display_name(appInfo));
+		xfdashboard_popup_menu_set_title_gicon(XFDASHBOARD_POPUP_MENU(popup), g_app_info_get_icon(appInfo));
+
+		/* Add each open window to pop-up of application */
+		appWindows=xfdashboard_application_tracker_get_window_list_by_app_info(priv->appTracker, appInfo);
+		if(appWindows)
+		{
+			const GList							*iter;
+			GList								*sortedList;
+			XfdashboardWindowTracker			*windowTracker;
+			XfdashboardWindowTrackerWindow		*window;
+			XfdashboardWindowTrackerWorkspace	*activeWorkspace;
+			XfdashboardWindowTrackerWorkspace	*windowWorkspace;
+			gboolean							separatorAdded;
+
+			/* Create sorted list of windows. The window is added to begin
+			 * of list if it is on active workspace and to end of list if it
+			 * is on any other workspace.
+			 */
+			windowTracker=xfdashboard_window_tracker_get_default();
+			activeWorkspace=xfdashboard_window_tracker_get_active_workspace(windowTracker);
+
+			sortedList=NULL;
+			for(iter=appWindows; iter; iter=g_list_next(iter))
+			{
+				/* Get window currently iterated */
+				window=XFDASHBOARD_WINDOW_TRACKER_WINDOW(iter->data);
+				if(!window) continue;
+
+				/* Get workspace of window */
+				windowWorkspace=xfdashboard_window_tracker_window_get_workspace(window);
+
+				/* If window is on active workspace add to begin of sorted list,
+				 * otherwise add to end of sorted list.
+				 */
+				if(windowWorkspace==activeWorkspace)
+				{
+					sortedList=g_list_prepend(sortedList, window);
+				}
+					else
+					{
+						sortedList=g_list_append(sortedList, window);
+					}
+			}
+
+			/* Now add menu items for each window in sorted list */
+			separatorAdded=FALSE;
+			for(iter=sortedList; iter; iter=g_list_next(iter))
+			{
+				/* Get window currently iterated */
+				window=XFDASHBOARD_WINDOW_TRACKER_WINDOW(iter->data);
+				if(!window) continue;
+
+				/* Get workspace of window */
+				windowWorkspace=xfdashboard_window_tracker_window_get_workspace(window);
+
+				/* Add separator if currently iterated window is not on active
+				 * workspace then all following windows are not on active workspace
+				 * anymore and a separator is added to split them from the ones
+				 * on active workspace. But add this separator only once.
+				 */
+				if(windowWorkspace!=activeWorkspace &&
+					!separatorAdded)
+				{
+					xfdashboard_popup_menu_add_separator(XFDASHBOARD_POPUP_MENU(popup));
+					separatorAdded=TRUE;
+				}
+
+				/* Create menu item for window */
+				menuItem=xfdashboard_button_new();
+				xfdashboard_button_set_text(XFDASHBOARD_BUTTON(menuItem), xfdashboard_window_tracker_window_get_title(window));
+				clutter_actor_set_x_expand(menuItem, TRUE);
+				xfdashboard_popup_menu_add_item(XFDASHBOARD_POPUP_MENU(popup),
+												menuItem,
+												_xfdashboard_quicklaunch_on_favourite_popup_menu_item_activate_window,
+												window);
+			}
+
+			/* Add a separator to split windows from other actions in pop-up menu */
+			xfdashboard_popup_menu_add_separator(XFDASHBOARD_POPUP_MENU(popup));
+
+			/* Release allocated resources */
+			g_list_free(sortedList);
+			g_object_unref(windowTracker);
+		}
+
+		/* Add menu item to launch application if it is not running */
+		if(!xfdashboard_application_tracker_is_running_by_app_info(priv->appTracker, appInfo))
+		{
+			menuItem=xfdashboard_button_new();
+			clutter_actor_set_x_expand(menuItem, TRUE);
+			xfdashboard_button_set_text(XFDASHBOARD_BUTTON(menuItem), _("Launch"));
+			xfdashboard_popup_menu_add_item(XFDASHBOARD_POPUP_MENU(popup),
+											menuItem,
+											_xfdashboard_quicklaunch_on_favourite_popup_menu_item_launch,
+											appInfo);
+		}
+
+// TODO: Add actions from GAppInfo
+
+		/* Add "Remove from favourites" if application button is for a favourite application */
+		if(xfdashboard_stylable_has_class(XFDASHBOARD_STYLABLE(appButton), "favourite-app"))
+		{
+			menuItem=xfdashboard_button_new();
+			clutter_actor_set_x_expand(menuItem, TRUE);
+			xfdashboard_button_set_text(XFDASHBOARD_BUTTON(menuItem), _("Remove from favourites"));
+			xfdashboard_popup_menu_add_item(XFDASHBOARD_POPUP_MENU(popup),
+											menuItem,
+											_xfdashboard_quicklaunch_on_favourite_popup_menu_item_remove_from_favourite,
+											appButton);
+		}
+
+		/* Add "Add to favourites" if application button is for a non-favourite application */
+		if(xfdashboard_stylable_has_class(XFDASHBOARD_STYLABLE(appButton), "dynamic-app"))
+		{
+			menuItem=xfdashboard_button_new();
+			clutter_actor_set_x_expand(menuItem, TRUE);
+			xfdashboard_button_set_text(XFDASHBOARD_BUTTON(menuItem), _("Add to favourites"));
+			xfdashboard_popup_menu_add_item(XFDASHBOARD_POPUP_MENU(popup),
+											menuItem,
+											_xfdashboard_quicklaunch_on_favourite_popup_menu_item_add_to_favourite,
+											appButton);
+		}
+
+		/* Activate pop-up menu */
+		xfdashboard_popup_menu_activate(XFDASHBOARD_POPUP_MENU(popup));
+	}
+}
+
 /* Drag of a quicklaunch icon begins */
 static void _xfdashboard_quicklaunch_on_favourite_drag_begin(ClutterDragAction *inAction,
 																ClutterActor *inActor,
@@ -1048,6 +1453,11 @@ static ClutterActor* _xfdashboard_quicklaunch_create_dynamic_actor(XfdashboardQu
 	/* Set up and add click action */
 	g_signal_connect_swapped(actor, "clicked", G_CALLBACK(_xfdashboard_quicklaunch_on_favourite_clicked), self);
 
+	/* Set up and add pop-up menu click action */
+	action=xfdashboard_click_action_new();
+	g_signal_connect_swapped(action, "clicked", G_CALLBACK(_xfdashboard_quicklaunch_on_favourite_popup_menu), self);
+	clutter_actor_add_action(actor, action);
+
 	/* Set up and add tooltip action */
 	action=xfdashboard_tooltip_action_new();
 	g_signal_connect(action, "activating", G_CALLBACK(_xfdashboard_quicklaunch_on_tooltip_activating), actor);
@@ -1080,6 +1490,11 @@ static ClutterActor* _xfdashboard_quicklaunch_create_favourite_actor(Xfdashboard
 	/* Set up and add click action */
 	g_signal_connect_swapped(actor, "clicked", G_CALLBACK(_xfdashboard_quicklaunch_on_favourite_clicked), self);
 
+	/* Set up and add pop-up menu click action */
+	action=xfdashboard_click_action_new();
+	g_signal_connect_swapped(action, "clicked", G_CALLBACK(_xfdashboard_quicklaunch_on_favourite_popup_menu), self);
+	clutter_actor_add_action(actor, action);
+
 	/* Set up and add drag'n'drop action */
 	action=xfdashboard_drag_action_new_with_source(CLUTTER_ACTOR(self));
 	clutter_drag_action_set_drag_threshold(CLUTTER_DRAG_ACTION(action), -1, -1);
@@ -1656,23 +2071,15 @@ static gboolean _xfdashboard_quicklaunch_selection_add_favourite(XfdashboardQuic
 		return(CLUTTER_EVENT_STOP);
 	}
 
-	/* Check if XfdashboardApplicationButton provides all information
-	 * needed to add favourite.
+	/* Check if application button provides all information needed to add favourite
+	 * and also check for duplicates.
 	 */
 	appInfo=xfdashboard_application_button_get_app_info(XFDASHBOARD_APPLICATION_BUTTON(currentSelection));
-	if(appInfo)
+	if(appInfo &&
+		!_xfdashboard_quicklaunch_has_favourite_appinfo(self, appInfo))
 	{
 		ClutterActor		*favouriteActor;
 
-		/* Check for duplicates */
-		if(_xfdashboard_quicklaunch_has_favourite_appinfo(self, appInfo))
-		{
-			/* Release allocated resources */
-			g_object_unref(appInfo);
-
-			return(CLUTTER_EVENT_STOP);
-		}
-
 		/* If an actor for current selection to add to favourites already exists,
 		 * destroy and remove it regardless if it an actor or a favourite app or
 		 * dynamic non-favourite app. It will be re-added later.
@@ -1698,9 +2105,9 @@ static gboolean _xfdashboard_quicklaunch_selection_add_favourite(XfdashboardQuic
 
 		/* Notify about new favourite */
 		xfdashboard_notify(CLUTTER_ACTOR(self),
-							xfdashboard_application_button_get_icon_name(XFDASHBOARD_APPLICATION_BUTTON(currentSelection)),
+							xfdashboard_application_button_get_icon_name(XFDASHBOARD_APPLICATION_BUTTON(favouriteActor)),
 							_("Favourite '%s' added"),
-							xfdashboard_application_button_get_display_name(XFDASHBOARD_APPLICATION_BUTTON(currentSelection)));
+							xfdashboard_application_button_get_display_name(XFDASHBOARD_APPLICATION_BUTTON(favouriteActor)));
 
 		g_signal_emit(self, XfdashboardQuicklaunchSignals[SIGNAL_FAVOURITE_ADDED], 0, appInfo);
 	}
@@ -1796,7 +2203,6 @@ static gboolean _xfdashboard_quicklaunch_selection_remove_favourite(XfdashboardQ
 		clutter_actor_add_child(CLUTTER_ACTOR(self), actor);
 	}
 
-
 	/* Update favourites from icon order */
 	_xfdashboard_quicklaunch_update_property_from_icons(self);
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list