[Xfce4-commits] [xfce/xfce4-appfinder] 02/03: Add single window option
noreply at xfce.org
noreply at xfce.org
Wed Nov 1 01:58:18 CET 2017
This is an automated email from the git hooks/post-receive script.
a n d r e p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository xfce/xfce4-appfinder.
commit a65265d95c33722dfe2f7821198b069fc5cd5a9b
Author: Andre Miranda <andreldm at xfce.org>
Date: Thu Oct 12 16:30:27 2017 -0300
Add single window option
---
src/appfinder-preferences.c | 65 ++++++++++++++++++++++++++---------------
src/appfinder-preferences.glade | 18 ++++++++++++
src/main.c | 11 ++++++-
3 files changed, 70 insertions(+), 24 deletions(-)
diff --git a/src/appfinder-preferences.c b/src/appfinder-preferences.c
index e3cd0c6..2ccdf65 100644
--- a/src/appfinder-preferences.c
+++ b/src/appfinder-preferences.c
@@ -36,22 +36,24 @@
-static void xfce_appfinder_preferences_response (GtkWidget *window,
- gint response_id,
- XfceAppfinderPreferences *preferences);
-static void xfce_appfinder_preferences_beside_sensitive (GtkWidget *show_icons,
- GtkWidget *text_beside_icon);
-static void xfce_appfinder_preferences_clear_history (XfceAppfinderPreferences *preferences);
-static void xfce_appfinder_preferences_action_add (XfceAppfinderPreferences *preferences);
-static void xfce_appfinder_preferences_action_remove (GtkWidget *button,
- XfceAppfinderPreferences *preferences);
-static void xfce_appfinder_preferences_action_changed (XfconfChannel *channel,
- const gchar *prop_name,
- const GValue *value,
- XfceAppfinderPreferences *preferences);
-static void xfce_appfinder_preferences_action_populate (XfceAppfinderPreferences *preferences);
-static void xfce_appfinder_preferences_selection_changed (GtkTreeSelection *selection,
- XfceAppfinderPreferences *preferences);
+static void xfce_appfinder_preferences_response (GtkWidget *window,
+ gint response_id,
+ XfceAppfinderPreferences *preferences);
+static void xfce_appfinder_preferences_beside_sensitive (GtkWidget *show_icons,
+ GtkWidget *text_beside_icon);
+static void xfce_appfinder_preferences_single_window_sensitive (GtkWidget *keep_running,
+ GtkWidget *single_window);
+static void xfce_appfinder_preferences_clear_history (XfceAppfinderPreferences *preferences);
+static void xfce_appfinder_preferences_action_add (XfceAppfinderPreferences *preferences);
+static void xfce_appfinder_preferences_action_remove (GtkWidget *button,
+ XfceAppfinderPreferences *preferences);
+static void xfce_appfinder_preferences_action_changed (XfconfChannel *channel,
+ const gchar *prop_name,
+ const GValue *value,
+ XfceAppfinderPreferences *preferences);
+static void xfce_appfinder_preferences_action_populate (XfceAppfinderPreferences *preferences);
+static void xfce_appfinder_preferences_selection_changed (GtkTreeSelection *selection,
+ XfceAppfinderPreferences *preferences);
@@ -96,9 +98,8 @@ xfce_appfinder_preferences_class_init (XfceAppfinderPreferencesClass *klass)
static void
xfce_appfinder_preferences_init (XfceAppfinderPreferences *preferences)
{
- GObject *object;
+ GObject *object, *previous;
GtkTreePath *path;
- GObject *icons;
preferences->channel = xfconf_channel_get ("xfce4-appfinder");
@@ -119,21 +120,29 @@ xfce_appfinder_preferences_init (XfceAppfinderPreferences *preferences)
xfconf_g_property_bind (preferences->channel, "/always-center", G_TYPE_BOOLEAN,
G_OBJECT (object), "active");
- object = gtk_builder_get_object (GTK_BUILDER (preferences), "enable-service");
+ previous = gtk_builder_get_object (GTK_BUILDER (preferences), "enable-service");
xfconf_g_property_bind (preferences->channel, "/enable-service", G_TYPE_BOOLEAN,
+ G_OBJECT (previous), "active");
+
+ object = gtk_builder_get_object (GTK_BUILDER (preferences), "single-window");
+ xfconf_g_property_bind (preferences->channel, "/single-window", G_TYPE_BOOLEAN,
G_OBJECT (object), "active");
- icons = gtk_builder_get_object (GTK_BUILDER (preferences), "icon-view");
+ g_signal_connect (G_OBJECT (previous), "toggled",
+ G_CALLBACK (xfce_appfinder_preferences_single_window_sensitive), object);
+ xfce_appfinder_preferences_single_window_sensitive (GTK_WIDGET (previous), GTK_WIDGET (object));
+
+ previous = gtk_builder_get_object (GTK_BUILDER (preferences), "icon-view");
xfconf_g_property_bind (preferences->channel, "/icon-view", G_TYPE_BOOLEAN,
- G_OBJECT (icons), "active");
+ G_OBJECT (previous), "active");
object = gtk_builder_get_object (GTK_BUILDER (preferences), "text-beside-icons");
xfconf_g_property_bind (preferences->channel, "/text-beside-icons", G_TYPE_BOOLEAN,
G_OBJECT (object), "active");
- g_signal_connect (G_OBJECT (icons), "toggled",
+ g_signal_connect (G_OBJECT (previous), "toggled",
G_CALLBACK (xfce_appfinder_preferences_beside_sensitive), object);
- xfce_appfinder_preferences_beside_sensitive (GTK_WIDGET (icons), GTK_WIDGET (object));
+ xfce_appfinder_preferences_beside_sensitive (GTK_WIDGET (previous), GTK_WIDGET (object));
object = gtk_builder_get_object (GTK_BUILDER (preferences), "item-icon-size");
gtk_combo_box_set_active (GTK_COMBO_BOX (object), XFCE_APPFINDER_ICON_SIZE_DEFAULT_ITEM);
@@ -210,6 +219,16 @@ xfce_appfinder_preferences_beside_sensitive (GtkWidget *show_icons,
static void
+xfce_appfinder_preferences_single_window_sensitive (GtkWidget *keep_running,
+ GtkWidget *single_window)
+{
+ gtk_widget_set_sensitive (single_window,
+ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (keep_running)));
+}
+
+
+
+static void
xfce_appfinder_preferences_clear_history (XfceAppfinderPreferences *preferences)
{
XfceAppfinderModel *model;
diff --git a/src/appfinder-preferences.glade b/src/appfinder-preferences.glade
index 3f27320..cee55c1 100644
--- a/src/appfinder-preferences.glade
+++ b/src/appfinder-preferences.glade
@@ -194,6 +194,24 @@
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkCheckButton" id="single-window">
+ <property name="label" translatable="yes">Single window</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">When an instance is running in the background, only open one window at a time.</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="active">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
</child>
</object>
diff --git a/src/main.c b/src/main.c
index 1cd76f3..d81d233 100644
--- a/src/main.c
+++ b/src/main.c
@@ -178,6 +178,15 @@ appfinder_window_new (const gchar *startup_id,
gboolean expanded)
{
GtkWidget *window;
+ XfconfChannel *channel;
+
+ if (g_slist_length (windows) > 0)
+ {
+ channel = xfconf_channel_get ("xfce4-appfinder");
+ if (xfconf_channel_get_bool (channel, "/single-window", FALSE))
+ gtk_window_present (GTK_WINDOW (g_slist_nth_data (windows, 0)));
+ return;
+ }
window = g_object_new (XFCE_TYPE_APPFINDER_WINDOW,
"startup-id", IS_STRING (startup_id) ? startup_id : NULL,
@@ -247,7 +256,7 @@ main (gint argc, gchar **argv)
if (!opt_collapsed && strcmp (*argv, "xfrun4") == 0)
opt_collapsed = TRUE;
- /* become the serivce owner or ask the current
+ /* become the service owner or ask the current
* owner to spawn an instance */
if (G_LIKELY (!opt_disable_server))
{
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list