[Libreoffice-commits] core.git: vcl/unx

Kohei Yoshida kohei.yoshida at collabora.com
Thu Nov 24 13:04:23 UTC 2016


 vcl/unx/gtk/a11y/atklistener.cxx |  127 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 125 insertions(+), 2 deletions(-)

New commits:
commit 5a9dc6e8452cec6068a30bb8d7f6edbeacd3174d
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Wed Nov 23 23:17:02 2016 -0500

    Some debug facility for AtkListener. Disabled at compile time.
    
    Change-Id: Ia5c9bfcdf38f41b5ff25f8c48122781850bbe113
    Reviewed-on: https://gerrit.libreoffice.org/31141
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Kohei Yoshida <libreoffice at kohei.us>

diff --git a/vcl/unx/gtk/a11y/atklistener.cxx b/vcl/unx/gtk/a11y/atklistener.cxx
index 39930b2..ce2254e 100644
--- a/vcl/unx/gtk/a11y/atklistener.cxx
+++ b/vcl/unx/gtk/a11y/atklistener.cxx
@@ -36,6 +36,13 @@
 
 #include <rtl/ref.hxx>
 
+#define DEBUG_ATK_LISTENER 0
+
+#if DEBUG_ATK_LISTENER
+#include <iostream>
+#include <sstream>
+#endif
+
 using namespace com::sun::star;
 
 AtkListener::AtkListener( AtkObjectWrapper* pWrapper ) : mpWrapper( pWrapper )
@@ -291,9 +298,125 @@ getAccessibleContextFromSource( const uno::Reference< uno::XInterface >& rxSourc
     return xContext;
 }
 
-/*****************************************************************************/
+#if DEBUG_ATK_LISTENER
+
+namespace {
+
+void printNotifyEvent( const accessibility::AccessibleEventObject& rEvent )
+{
+    static std::vector<const char*> aLabels = {
+        0,
+        "NAME_CHANGED",                                       // 01
+        "DESCRIPTION_CHANGED",                                // 02
+        "ACTION_CHANGED",                                     // 03
+        "STATE_CHANGED",                                      // 04
+        "ACTIVE_DESCENDANT_CHANGED",                          // 05
+        "BOUNDRECT_CHANGED",                                  // 06
+        "CHILD",                                              // 07
+        "INVALIDATE_ALL_CHILDREN",                            // 08
+        "SELECTION_CHANGED",                                  // 09
+        "VISIBLE_DATA_CHANGED",                               // 10
+        "VALUE_CHANGED",                                      // 11
+        "CONTENT_FLOWS_FROM_RELATION_CHANGED",                // 12
+        "CONTENT_FLOWS_TO_RELATION_CHANGED",                  // 13
+        "CONTROLLED_BY_RELATION_CHANGED",                     // 14
+        "CONTROLLER_FOR_RELATION_CHANGED",                    // 15
+        "LABEL_FOR_RELATION_CHANGED",                         // 16
+        "LABELED_BY_RELATION_CHANGED",                        // 17
+        "MEMBER_OF_RELATION_CHANGED",                         // 18
+        "SUB_WINDOW_OF_RELATION_CHANGED",                     // 19
+        "CARET_CHANGED",                                      // 20
+        "TEXT_SELECTION_CHANGED",                             // 21
+        "TEXT_CHANGED",                                       // 22
+        "TEXT_ATTRIBUTE_CHANGED",                             // 23
+        "HYPERTEXT_CHANGED",                                  // 24
+        "TABLE_CAPTION_CHANGED",                              // 25
+        "TABLE_COLUMN_DESCRIPTION_CHANGED",                   // 26
+        "TABLE_COLUMN_HEADER_CHANGED",                        // 27
+        "TABLE_MODEL_CHANGED",                                // 28
+        "TABLE_ROW_DESCRIPTION_CHANGED",                      // 29
+        "TABLE_ROW_HEADER_CHANGED",                           // 30
+        "TABLE_SUMMARY_CHANGED",                              // 31
+        "LISTBOX_ENTRY_EXPANDED",                             // 32
+        "LISTBOX_ENTRY_COLLAPSED",                            // 33
+        "ACTIVE_DESCENDANT_CHANGED_NOFOCUS",                  // 34
+        "SELECTION_CHANGED_ADD",                              // 35
+        "SELECTION_CHANGED_REMOVE",                           // 36
+        "SELECTION_CHANGED_WITHIN",                           // 37
+        "PAGE_CHANGED",                                       // 38
+        "SECTION_CHANGED",                                    // 39
+        "COLUMN_CHANGED",                                     // 40
+        "ROLE_CHANGED",                                       // 41
+    };
+
+    static std::vector<const char*> aStates = {
+        "INVALID",             // 00
+        "ACTIVE",              // 01
+        "ARMED",               // 02
+        "BUSY",                // 03
+        "CHECKED",             // 04
+        "DEFUNC",              // 05
+        "EDITABLE",            // 06
+        "ENABLED",             // 07
+        "EXPANDABLE",          // 08
+        "EXPANDED",            // 09
+        "FOCUSABLE",           // 10
+        "FOCUSED",             // 11
+        "HORIZONTAL",          // 12
+        "ICONIFIED",           // 13
+        "INDETERMINATE",       // 14
+        "MANAGES_DESCENDANTS", // 15
+        "MODAL",               // 16
+        "MULTI_LINE",          // 17
+        "MULTI_SELECTABLE",    // 18
+        "OPAQUE",              // 19
+        "PRESSED",             // 20
+        "RESIZABLE",           // 21
+        "SELECTABLE",          // 22
+        "SELECTED",            // 23
+        "SENSITIVE",           // 24
+        "SHOWING",             // 25
+        "SINGLE_LINE",         // 26
+        "STALE",               // 27
+        "TRANSIENT",           // 28
+        "VERTICAL",            // 29
+        "VISIBLE",             // 30
+        "MOVEABLE",            // 31
+        "DEFAULT",             // 32
+        "OFFSCREEN",           // 33
+        "COLLAPSE",            // 34
+    };
+
+    auto getOrUnknown = [](const std::vector<const char*>& rCont, size_t nIndex) -> std::string
+    {
+        return (nIndex < rCont.size()) ? rCont[nIndex] : "<unknown>";
+    };
+
+    std::ostringstream os;
+    os << "--" << std::endl;
+    os << "* event = " << getOrUnknown(aLabels, rEvent.EventId) << std::endl;
+
+    switch (rEvent.EventId)
+    {
+        case accessibility::AccessibleEventId::STATE_CHANGED:
+        {
+            sal_Int16 nState;
+            if (rEvent.OldValue >>= nState)
+                os << "  * old state = " << getOrUnknown(aStates, nState);
+            if (rEvent.NewValue >>= nState)
+                os << "  * new state = " << getOrUnknown(aStates, nState);
+
+            os << std::endl;
+        }
+    }
+
+    std::cout << os.str();
+}
+
+}
+
+#endif
 
-// XAccessibleEventListener
 void AtkListener::notifyEvent( const accessibility::AccessibleEventObject& aEvent ) throw( uno::RuntimeException, std::exception )
 {
     if( !mpWrapper )


More information about the Libreoffice-commits mailing list