freeze break request: add org.a11y.Bus.IsEnabled
- From: Mike Gorse <mgorse novell com>
- To: release-team gnome org
- Subject: freeze break request: add org.a11y.Bus.IsEnabled
- Date: Sun, 21 Aug 2011 08:14:28 -0500 (CDT)
A while ago, Frederik Gladhorn proposed an API to check whether
accessibility is enabled and also to toggle it on or off at runtime:
https://mail.gnome.org/archives/desktop-devel-list/2011-May/msg00397.html
I would really like to implement the part of the proposal to check whether
a11y is enabled; I ought to have done this sooner, but it slipped my mind,
and I let API/feature freeze creep up on me. Historically, third-party
apps have checked gconf to determine whether accessibility is enabled and
to enable their own accessibility code. Unless it has been changed
recently, Firefox is still doing this and so is inaccessible out of the
box on a GNOME 3 system that was not created by upgrading a GNOME 2 system
on which the user would have set the gconf key. I am also planning one
more Mono Accessibility release to clean up/modernize a few things, and
this needs to be updated there as well. Anyway, it seems preferable to
have a way of checking whether accessibility is enabled that doesn't
involve looking at a GSettings key, since other desktops (such as KDE ans
XFCE) may support accessibility in the near future as well, and I would
like for applications to be able to begin coding to it and have it
function for GNOME 3.2 systems, so I really don't want this to have to
wait for 3.4. I'm attaching a patch.
Thanks,
-Mike G-
diff --git a/src/BusObject.cs b/src/BusObject.cs
index 8106023..35693b5 100644
--- a/src/BusObject.cs
+++ b/src/BusObject.cs
@@ -13,6 +13,7 @@ namespace NDesk.DBus
{
protected Connection conn;
string bus_name;
+ string alt_bus_name;
ObjectPath object_path;
//protected BusObject ()
@@ -55,6 +56,7 @@ namespace NDesk.DBus
rule.Fields.Add (FieldCode.Interface, new MatchTest (iface));
rule.Fields.Add (FieldCode.Member, new MatchTest (member));
rule.Fields.Add (FieldCode.Path, new MatchTest (object_path));
+ rule.Fields.Add (FieldCode.Sender, new MatchTest (alt_bus_name != null? alt_bus_name: bus_name));
if (adding) {
if (conn.Handlers.ContainsKey (rule))
@@ -218,12 +220,16 @@ namespace NDesk.DBus
#endif
Message retMsg = conn.SendWithReplyAndBlock (callMsg);
+Console.WriteLine ("dbg: sender: " + retMsg.Header[FieldCode.Sender]);
MessageReader retVal = null;
//handle the reply message
switch (retMsg.Header.MessageType) {
case MessageType.MethodReturn:
+ if ((string)retMsg.Header[FieldCode.Sender] != bus_name)
+ alt_bus_name = (string)retMsg.Header[FieldCode.Sender];
+if ((string)retMsg.Header[FieldCode.Sender] != bus_name) Console.WriteLine ("dbg: new name--magic! " + bus_name + " -> " + alt_bus_name);
retVal = new MessageReader (retMsg);
break;
case MessageType.Error:
diff --git a/src/Connection.cs b/src/Connection.cs
index 6a62647..7061b34 100644
--- a/src/Connection.cs
+++ b/src/Connection.cs
@@ -324,10 +324,13 @@ namespace NDesk.DBus
rule.MessageType = MessageType.Signal;
rule.Fields.Add (FieldCode.Interface, new MatchTest (signal.Interface));
rule.Fields.Add (FieldCode.Member, new MatchTest (signal.Member));
+ rule.Fields.Add (FieldCode.Sender, new MatchTest (signal.Sender));
+Console.WriteLine ("dbg: signal: " + signal.Member);
rule.Fields.Add (FieldCode.Path, new MatchTest (signal.Path));
Delegate dlg;
if (Handlers.TryGetValue (rule, out dlg) && dlg != null) {
+Console.WriteLine ("dbg: found");
MethodInfo mi = dlg.GetType ().GetMethod ("Invoke");
bool compatible = false;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]