[Libreoffice-commits] core.git: vcl/inc vcl/unx
Michael Stahl
mstahl at redhat.com
Mon Sep 25 13:16:27 UTC 2017
vcl/inc/unx/gtk/gtkdata.hxx | 8 ++++++++
vcl/unx/gtk/a11y/atkutil.cxx | 19 ++++++++++++++++---
vcl/unx/gtk/gtkdata.cxx | 1 +
vcl/unx/gtk3/gtk3gtkdata.cxx | 1 +
4 files changed, 26 insertions(+), 3 deletions(-)
New commits:
commit 974d65aed528783bb06b96e5400b5ab347e0b258
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Sep 22 17:17:34 2017 +0200
vcl: [loplugin:badstatics] aDocumentFocusListener
Move it into class GtkSalData; have to use 2 variables because the class
is only defined in atkutil.cxx but the ~GtkSalData is in gtkdata.cxx.
Change-Id: I3b12f02a1a5454f39206cbd0fe224d3f08a44c73
Reviewed-on: https://gerrit.libreoffice.org/42673
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <mstahl at redhat.com>
diff --git a/vcl/inc/unx/gtk/gtkdata.hxx b/vcl/inc/unx/gtk/gtkdata.hxx
index 146c1656f302..4f4d520fc141 100644
--- a/vcl/inc/unx/gtk/gtkdata.hxx
+++ b/vcl/inc/unx/gtk/gtkdata.hxx
@@ -35,7 +35,10 @@
#include <list>
+namespace com { namespace sun { namespace star { namespace accessibility { class XAccessibleEventListener; } } } }
+
class GtkSalDisplay;
+class DocumentFocusListener;
inline GdkWindow * widget_get_window(GtkWidget *widget)
{
@@ -99,10 +102,15 @@ class GtkSalData : public GenericUnixSalData
osl::Condition m_aDispatchCondition;
css::uno::Any m_aException;
+ css::uno::Reference<css::accessibility::XAccessibleEventListener> m_xDocumentFocusListener;
+ DocumentFocusListener * m_pDocumentFocusListener;
+
public:
GtkSalData( SalInstance *pInstance );
virtual ~GtkSalData() override;
+ DocumentFocusListener & GetDocumentFocusListener();
+
void Init();
virtual void Dispose() override;
diff --git a/vcl/unx/gtk/a11y/atkutil.cxx b/vcl/unx/gtk/a11y/atkutil.cxx
index c30a41905302..14bb6045c376 100644
--- a/vcl/unx/gtk/a11y/atkutil.cxx
+++ b/vcl/unx/gtk/a11y/atkutil.cxx
@@ -38,6 +38,7 @@
#include <vcl/menu.hxx>
#include <vcl/toolbox.hxx>
+#include <unx/gtk/gtkdata.hxx>
#include "atkwrapper.hxx"
#include "atkutil.hxx"
@@ -512,10 +513,22 @@ WindowList g_aWindowList;
}
+DocumentFocusListener & GtkSalData::GetDocumentFocusListener()
+{
+ if (!m_pDocumentFocusListener)
+ {
+ m_pDocumentFocusListener = new DocumentFocusListener;
+ m_xDocumentFocusListener.set(m_pDocumentFocusListener);
+ }
+ return *m_pDocumentFocusListener;
+}
+
static void handle_get_focus(::VclWindowEvent const * pEvent)
{
- static rtl::Reference< DocumentFocusListener > aDocumentFocusListener =
- new DocumentFocusListener;
+ GtkSalData *const pSalData(GetGtkSalData());
+ assert(pSalData);
+
+ DocumentFocusListener & rDocumentFocusListener(pSalData->GetDocumentFocusListener());
vcl::Window *pWindow = pEvent->GetWindow();
@@ -566,7 +579,7 @@ static void handle_get_focus(::VclWindowEvent const * pEvent)
g_aWindowList.list.insert(pWindow);
try
{
- aDocumentFocusListener->attachRecursive(xAccessible, xContext, xStateSet);
+ rDocumentFocusListener.attachRecursive(xAccessible, xContext, xStateSet);
}
catch (const uno::Exception&)
{
diff --git a/vcl/unx/gtk/gtkdata.cxx b/vcl/unx/gtk/gtkdata.cxx
index e5cdd81daba0..eaa34d9461e5 100644
--- a/vcl/unx/gtk/gtkdata.cxx
+++ b/vcl/unx/gtk/gtkdata.cxx
@@ -417,6 +417,7 @@ GtkSalData::GtkSalData( SalInstance *pInstance )
: GenericUnixSalData( SAL_DATA_GTK, pInstance )
, m_aDispatchMutex()
, m_aDispatchCondition()
+ , m_pDocumentFocusListener(nullptr)
{
m_pUserEvent = nullptr;
}
diff --git a/vcl/unx/gtk3/gtk3gtkdata.cxx b/vcl/unx/gtk3/gtk3gtkdata.cxx
index 4057b0e896c9..844dc77f20c1 100644
--- a/vcl/unx/gtk3/gtk3gtkdata.cxx
+++ b/vcl/unx/gtk3/gtk3gtkdata.cxx
@@ -388,6 +388,7 @@ GtkSalData::GtkSalData( SalInstance *pInstance )
: GenericUnixSalData( SAL_DATA_GTK3, pInstance )
, m_aDispatchMutex()
, m_aDispatchCondition()
+ , m_pDocumentFocusListener(nullptr)
{
m_pUserEvent = nullptr;
}
More information about the Libreoffice-commits
mailing list