diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-12-19 13:43:56 +0100 |
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-12-19 13:43:56 +0100 |
| commit | cf56372f27d3e3a704eb3ff0754f2d650c239833 (patch) | |
| tree | d95411a3c0e958ed8d2b4bbdfb97cc3d99036952 /unity-shared | |
| parent | a0559dcdb0cf3c0aade675f5aa119a61551545ac (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.cpp | 15 |
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_; }; |
