[glibmm] Gio::Settings: Replace connect_changed() by signal_changed(key)
- From: Kjell Ahlstedt <kjellahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glibmm] Gio::Settings: Replace connect_changed() by signal_changed(key)
- Date: Sat, 23 May 2015 07:11:32 +0000 (UTC)
commit d2a6547a99b8d63d7d20e16fb268910fab4e69b8
Author: Kjell Ahlstedt <kjell ahlstedt bredband net>
Date: Sat May 23 08:52:42 2015 +0200
Gio::Settings: Replace connect_changed() by signal_changed(key)
* gio/src/settings.[hg|ccg]: Add signal_changed(key). Remove connect_changed().
* examples/settings/settings.cc: Test signal_changed(key). Bug #749034.
examples/settings/settings.cc | 14 ++++++++++++++
gio/src/settings.ccg | 15 ---------------
gio/src/settings.hg | 16 ++--------------
3 files changed, 16 insertions(+), 29 deletions(-)
---
diff --git a/examples/settings/settings.cc b/examples/settings/settings.cc
index b7ce0ca..bbf1c19 100644
--- a/examples/settings/settings.cc
+++ b/examples/settings/settings.cc
@@ -50,6 +50,18 @@ static void on_key_changed(const Glib::ustring& key, const Glib::RefPtr<Gio::Set
std::cerr << "Unknown key\n";
}
+static void on_key_changed_all(const Glib::ustring& key)
+{
+ std::cout << "on_key_changed_all(" << key << ")\n";
+}
+
+static void on_key_changed_int(const Glib::ustring& key)
+{
+ std::cout << "on_key_changed_int(" << key << ")\n";
+ if (key != INT_KEY)
+ std::cerr << "Unexpected key\n";
+}
+
int main(int, char**)
{
std::locale::global(std::locale(""));
@@ -67,6 +79,8 @@ int main(int, char**)
Gio::Settings::create("org.gtkmm.demo");
settings->signal_changed().connect(sigc::bind(sigc::ptr_fun(&on_key_changed), settings));
+ settings->signal_changed("").connect(sigc::ptr_fun(&on_key_changed_all));
+ settings->signal_changed(INT_KEY).connect(sigc::ptr_fun(&on_key_changed_int));
std::cout << Glib::ustring::compose("Initial value of '%1': '%2'\n",
STRING_KEY, settings->get_string(STRING_KEY));
diff --git a/gio/src/settings.ccg b/gio/src/settings.ccg
index 8fa0860..d800aa9 100644
--- a/gio/src/settings.ccg
+++ b/gio/src/settings.ccg
@@ -18,7 +18,6 @@
#include <gio/gio.h>
#include <glibmm/exceptionhandler.h>
#include <glibmm/vectorutils.h>
-#include <glibmm/propertyproxy_base.h> //For PropertyProxyConnectionNode
namespace Gio
{
@@ -71,18 +70,4 @@ std::vector<Glib::ustring> Settings::list_schemas()
}
_DEPRECATE_IFDEF_END
-sigc::connection Settings::connect_changed(const Glib::ustring& key, const SlotChanged& slot)
-{
- // Create a proxy to hold our connection info
- // This will be deleted by destroy_notify_handler.
- Glib::PropertyProxyConnectionNode* pConnectionNode = new Glib::PropertyProxyConnectionNode(slot,
G_OBJECT(gobj()));
-
- const Glib::ustring signal_name = "changed::" + key;
- g_signal_connect_data(gobj(),
- signal_name.c_str(), (GCallback)(&Glib::PropertyProxyConnectionNode::callback), pConnectionNode,
- &Glib::PropertyProxyConnectionNode::destroy_notify_handler,
- G_CONNECT_AFTER);
- return sigc::connection(pConnectionNode->slot_);
-}
-
}
diff --git a/gio/src/settings.hg b/gio/src/settings.hg
index abb50e9..4303619 100644
--- a/gio/src/settings.hg
+++ b/gio/src/settings.hg
@@ -201,19 +201,6 @@ _DEPRECATE_IFDEF_END
//TODO?: _WRAP_PROPERTY("backend", Glib::RefPtr<SettingsBackend>)
- /** See connect_changed().
- * @newin{2,46}
- */
- typedef sigc::slot<void> SlotChanged;
-
- /** Connect a callback @a slot to the "changed" signal for the @a key.
- * This will be emitted whenever the the value for that key has been changed.
- * @result A sigc::connection
- *
- * @newin{2,46}
- */
- sigc::connection connect_changed(const Glib::ustring& key, const SlotChanged& slot);
-
_WRAP_PROPERTY("delay-apply", bool)
_WRAP_PROPERTY("has-unapplied", bool)
_WRAP_PROPERTY("path", std::string)
@@ -224,8 +211,9 @@ _DEPRECATE_IFDEF_END
//TODO?: _WRAP_SIGNAL(bool change_event(const Glib::ArrayHandle<Glib::QueryQuark>& keys, int n_keys),
"change-event")
+ //TODO: Remove two_signal_methods when we can break ABI.
#m4 _CONVERSION(`const char*',`const Glib::ustring&',__GCHARP_TO_USTRING)
- _WRAP_SIGNAL(void changed(const Glib::ustring& key), "changed")
+ _WRAP_SIGNAL(void changed(const Glib::ustring& key), "changed", detail_name key, two_signal_methods)
_WRAP_SIGNAL(bool writable_change_event(guint key), "writable-change-event")
_WRAP_SIGNAL(void writable_changed(const Glib::ustring& key), writable_changed)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]