You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
5.9 KiB
156 lines
5.9 KiB
From 55fab9dc066875641cffbab966ca20e35821afdf Mon Sep 17 00:00:00 2001
|
|
From: Michael Terry <michael.terry@canonical.com>
|
|
Date: Wed, 29 May 2013 14:31:30 +0000
|
|
Subject: capplet: Don't show desktop files with NoDisplay=true
|
|
|
|
https://bugzilla.gnome.org/show_bug.cgi?id=556459
|
|
---
|
|
diff --git a/capplet/gsm-properties-dialog.c b/capplet/gsm-properties-dialog.c
|
|
index 712b861..24bf907 100644
|
|
--- a/capplet/gsm-properties-dialog.c
|
|
+++ b/capplet/gsm-properties-dialog.c
|
|
@@ -112,6 +112,7 @@ _fill_iter_from_app (GtkListStore *list_store,
|
|
GspApp *app)
|
|
{
|
|
gboolean hidden;
|
|
+ gboolean display;
|
|
gboolean enabled;
|
|
gboolean shown;
|
|
GIcon *icon;
|
|
@@ -119,6 +120,7 @@ _fill_iter_from_app (GtkListStore *list_store,
|
|
const char *app_name;
|
|
|
|
hidden = gsp_app_get_hidden (app);
|
|
+ display = gsp_app_get_display (app);
|
|
enabled = gsp_app_get_enabled (app);
|
|
shown = gsp_app_get_shown (app);
|
|
icon = gsp_app_get_icon (app);
|
|
@@ -151,7 +153,7 @@ _fill_iter_from_app (GtkListStore *list_store,
|
|
}
|
|
|
|
gtk_list_store_set (list_store, iter,
|
|
- STORE_COL_VISIBLE, !hidden && shown,
|
|
+ STORE_COL_VISIBLE, !hidden && shown && display,
|
|
STORE_COL_ENABLED, enabled,
|
|
STORE_COL_GICON, icon,
|
|
STORE_COL_DESCRIPTION, description,
|
|
diff --git a/capplet/gsp-app.c b/capplet/gsp-app.c
|
|
index eeda466..c92b8da 100644
|
|
--- a/capplet/gsp-app.c
|
|
+++ b/capplet/gsp-app.c
|
|
@@ -41,18 +41,20 @@
|
|
|
|
#define GSP_APP_SAVE_DELAY 2
|
|
|
|
-#define GSP_ASP_SAVE_MASK_HIDDEN 0x0001
|
|
-#define GSP_ASP_SAVE_MASK_ENABLED 0x0002
|
|
-#define GSP_ASP_SAVE_MASK_NAME 0x0004
|
|
-#define GSP_ASP_SAVE_MASK_EXEC 0x0008
|
|
-#define GSP_ASP_SAVE_MASK_COMMENT 0x0010
|
|
-#define GSP_ASP_SAVE_MASK_ALL 0xffff
|
|
+#define GSP_ASP_SAVE_MASK_HIDDEN 0x0001
|
|
+#define GSP_ASP_SAVE_MASK_ENABLED 0x0002
|
|
+#define GSP_ASP_SAVE_MASK_NAME 0x0004
|
|
+#define GSP_ASP_SAVE_MASK_EXEC 0x0008
|
|
+#define GSP_ASP_SAVE_MASK_COMMENT 0x0010
|
|
+#define GSP_ASP_SAVE_MASK_NO_DISPLAY 0x0020
|
|
+#define GSP_ASP_SAVE_MASK_ALL 0xffff
|
|
|
|
struct _GspAppPrivate {
|
|
char *basename;
|
|
char *path;
|
|
|
|
gboolean hidden;
|
|
+ gboolean no_display;
|
|
gboolean enabled;
|
|
gboolean shown;
|
|
|
|
@@ -341,6 +343,14 @@ _gsp_app_user_equal_system (GspApp *app,
|
|
return FALSE;
|
|
}
|
|
|
|
+ if (gsp_key_file_get_boolean (keyfile,
|
|
+ G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY,
|
|
+ FALSE) != app->priv->no_display) {
|
|
+ g_free (path);
|
|
+ g_key_file_free (keyfile);
|
|
+ return FALSE;
|
|
+ }
|
|
+
|
|
str = gsp_key_file_get_locale_string (keyfile,
|
|
G_KEY_FILE_DESKTOP_KEY_NAME);
|
|
if (!_gsp_str_equal (str, app->priv->name)) {
|
|
@@ -449,6 +459,12 @@ _gsp_app_save (gpointer data)
|
|
app->priv->hidden);
|
|
}
|
|
|
|
+ if (app->priv->save_mask & GSP_ASP_SAVE_MASK_NO_DISPLAY) {
|
|
+ gsp_key_file_set_boolean (keyfile,
|
|
+ G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY,
|
|
+ app->priv->no_display);
|
|
+ }
|
|
+
|
|
if (app->priv->save_mask & GSP_ASP_SAVE_MASK_ENABLED) {
|
|
gsp_key_file_set_boolean (keyfile,
|
|
GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED,
|
|
@@ -548,6 +564,14 @@ gsp_app_get_hidden (GspApp *app)
|
|
}
|
|
|
|
gboolean
|
|
+gsp_app_get_display (GspApp *app)
|
|
+{
|
|
+ g_return_val_if_fail (GSP_IS_APP (app), FALSE);
|
|
+
|
|
+ return !app->priv->no_display;
|
|
+}
|
|
+
|
|
+gboolean
|
|
gsp_app_get_enabled (GspApp *app)
|
|
{
|
|
g_return_val_if_fail (GSP_IS_APP (app), FALSE);
|
|
@@ -805,6 +829,9 @@ gsp_app_new (const char *path,
|
|
app->priv->hidden = gsp_key_file_get_boolean (keyfile,
|
|
G_KEY_FILE_DESKTOP_KEY_HIDDEN,
|
|
FALSE);
|
|
+ app->priv->no_display = gsp_key_file_get_boolean (keyfile,
|
|
+ G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY,
|
|
+ FALSE);
|
|
app->priv->enabled = gsp_key_file_get_boolean (keyfile,
|
|
GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED,
|
|
TRUE);
|
|
@@ -952,6 +979,7 @@ gsp_app_create (const char *name,
|
|
app->priv->basename, NULL);
|
|
|
|
app->priv->hidden = FALSE;
|
|
+ app->priv->no_display = FALSE;
|
|
app->priv->enabled = TRUE;
|
|
app->priv->shown = TRUE;
|
|
|
|
@@ -1049,6 +1077,12 @@ gsp_app_copy_desktop_file (const char *uri)
|
|
app->priv->save_mask |= GSP_ASP_SAVE_MASK_HIDDEN;
|
|
}
|
|
|
|
+ if (app->priv->no_display) {
|
|
+ changed = TRUE;
|
|
+ app->priv->no_display = FALSE;
|
|
+ app->priv->save_mask |= GSP_ASP_SAVE_MASK_NO_DISPLAY;
|
|
+ }
|
|
+
|
|
if (!app->priv->enabled) {
|
|
changed = TRUE;
|
|
app->priv->enabled = TRUE;
|
|
diff --git a/capplet/gsp-app.h b/capplet/gsp-app.h
|
|
index 6a2e3be..a199795 100644
|
|
--- a/capplet/gsp-app.h
|
|
+++ b/capplet/gsp-app.h
|
|
@@ -74,6 +74,7 @@ const char *gsp_app_get_basename (GspApp *app);
|
|
const char *gsp_app_get_path (GspApp *app);
|
|
|
|
gboolean gsp_app_get_hidden (GspApp *app);
|
|
+gboolean gsp_app_get_display (GspApp *app);
|
|
|
|
gboolean gsp_app_get_enabled (GspApp *app);
|
|
void gsp_app_set_enabled (GspApp *app,
|
|
--
|
|
cgit v0.9.2
|