summaryrefslogtreecommitdiff
path: root/unity-shared
diff options
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2014-12-19 13:43:56 +0100
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2014-12-19 13:43:56 +0100
commitcf56372f27d3e3a704eb3ff0754f2d650c239833 (patch)
treed95411a3c0e958ed8d2b4bbdfb97cc3d99036952 /unity-shared
parenta0559dcdb0cf3c0aade675f5aa119a61551545ac (diff)
MenuManager: add setting to control menu visibility and use that value
Fixes LP: #955193 (bzr r3884.9.14)
Diffstat (limited to 'unity-shared')
-rw-r--r--unity-shared/MenuManager.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/unity-shared/MenuManager.cpp b/unity-shared/MenuManager.cpp
index 238db41bd..2f78b62f7 100644
--- a/unity-shared/MenuManager.cpp
+++ b/unity-shared/MenuManager.cpp
@@ -20,6 +20,7 @@
#include <gtk/gtk.h>
#include <NuxCore/Logger.h>
+#include <UnityCore/GLibSignal.h>
#include <UnityCore/GLibWrapper.h>
#include <UnityCore/DBusIndicators.h>
#include <unordered_map>
@@ -30,8 +31,14 @@ namespace unity
{
namespace menu
{
+namespace
+{
DECLARE_LOGGER(logger, "unity.menu.manager");
+const std::string SETTINGS_NAME = "com.canonical.Unity";
+const std::string ALWAYS_SHOW_MENUS_KEY = "always-show-menus";
+}
+
using namespace indicator;
struct Manager::Impl : sigc::trackable
@@ -40,6 +47,7 @@ struct Manager::Impl : sigc::trackable
: parent_(parent)
, indicators_(indicators)
, key_grabber_(grabber)
+ , settings_(g_settings_new(SETTINGS_NAME.c_str()))
{
for (auto const& indicator : indicators_->GetIndicators())
AddIndicator(indicator);
@@ -49,6 +57,11 @@ struct Manager::Impl : sigc::trackable
indicators_->on_object_removed.connect(sigc::mem_fun(this, &Impl::RemoveIndicator));
indicators_->on_entry_activate_request.connect(sigc::mem_fun(this, &Impl::ActivateRequest));
indicators_->icon_paths_changed.connect(sigc::mem_fun(this, &Impl::IconPathsChanged));
+
+ parent_->always_show_menus = g_settings_get_boolean(settings_, ALWAYS_SHOW_MENUS_KEY.c_str());
+ signals_.Add<void, GSettings*, const gchar*>(settings_, "changed::" + ALWAYS_SHOW_MENUS_KEY, [this] (GSettings*, const gchar*) {
+ parent_->always_show_menus = g_settings_get_boolean(settings_, ALWAYS_SHOW_MENUS_KEY.c_str());
+ });
}
~Impl()
@@ -152,6 +165,8 @@ struct Manager::Impl : sigc::trackable
AppmenuIndicator::Ptr appmenu_;
key::Grabber::Ptr key_grabber_;
connection::Manager appmenu_connections_;
+ glib::Object<GSettings> settings_;
+ glib::SignalManager signals_;
std::unordered_map<std::string, std::shared_ptr<CompAction>> entry_actions_;
};