include/sfx2/basedlgs.hxx                |    2 +-
 include/vcl/weld.hxx                     |    9 ++-------
 reportdesign/source/ui/dlg/AddField.cxx  |    4 ++--
 reportdesign/source/ui/dlg/Navigator.cxx |    5 ++---
 reportdesign/source/ui/inc/AddField.hxx  |    2 +-
 reportdesign/source/ui/inc/Navigator.hxx |    2 +-
 sfx2/source/dialog/basedlgs.cxx          |    4 ++--
 vcl/inc/salvtables.hxx                   |    4 ----
 vcl/source/app/salvtables.cxx            |   17 -----------------
 vcl/unx/gtk3/gtk3gtkinst.cxx             |   31 -------------------------------
 10 files changed, 11 insertions(+), 69 deletions(-)

New commits:
commit 9ffd28c32a301141a26e41ddd0cf485a562c83bb
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Mar 5 16:13:19 2021 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Mar 5 21:57:42 2021 +0100

    use container_focus_changed instead of toplevel_focus_changed
    
    seeing as its the same thing, but available one level of
    inheritance down
    
    Change-Id: Ieedbf2bc8cea09cdafff1514eac5c35b85c2fdd0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112023
    Tested-by: Caolán McNamara <caol...@redhat.com>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/include/sfx2/basedlgs.hxx b/include/sfx2/basedlgs.hxx
index 92da31ed12af..2d32406e4de9 100644
--- a/include/sfx2/basedlgs.hxx
+++ b/include/sfx2/basedlgs.hxx
@@ -37,7 +37,7 @@ class SFX2_DLLPUBLIC SfxDialogController : public 
weld::GenericDialogController
 private:
     DECL_DLLPRIVATE_STATIC_LINK(SfxDialogController, InstallLOKNotifierHdl, 
void*, vcl::ILibreOfficeKitNotifier*);
 
-    DECL_DLLPRIVATE_LINK(FocusChangeHdl, weld::Widget&, void);
+    DECL_DLLPRIVATE_LINK(FocusChangeHdl, weld::Container&, void);
 
 public:
     SfxDialogController(weld::Widget* pParent, const OUString& rUIFile, const 
OString& rDialogId);
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index a42dd09aad5d..a5590b73f6ae 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -483,9 +483,6 @@ class VCL_DLLPUBLIC Window : virtual public Container
 {
 protected:
     Link<Widget&, bool> m_aHelpRequestHdl;
-    Link<Widget&, void> m_aTopLevelFocusChangedHdl;
-
-    void signal_toplevel_focus_changed() { 
m_aTopLevelFocusChangedHdl.Call(*this); }
 
 public:
     virtual void set_title(const OUString& rTitle) = 0;
@@ -509,6 +506,8 @@ public:
     // off again.
     virtual void set_centered_on_parent(bool bTrackGeometryRequests) = 0;
     // returns whether the widget that has focus is within this Window
+    // (its very possible to move this to weld::Container if that becomes
+    // desirable)
     virtual bool has_toplevel_focus() const = 0;
     virtual void present() = 0;
     virtual void set_window_state(const OString& rStr) = 0;
@@ -517,10 +516,6 @@ public:
     virtual css::uno::Reference<css::awt::XWindow> GetXWindow() = 0;
 
     void connect_help(const Link<Widget&, bool>& rLink) { m_aHelpRequestHdl = 
rLink; }
-    virtual void connect_toplevel_focus_changed(const Link<Widget&, void>& 
rLink)
-    {
-        m_aTopLevelFocusChangedHdl = rLink;
-    }
 
     virtual SystemEnvData get_system_data() const = 0;
 
diff --git a/reportdesign/source/ui/dlg/AddField.cxx 
b/reportdesign/source/ui/dlg/AddField.cxx
index e7e8e1b38c18..80c868eb5fd9 100644
--- a/reportdesign/source/ui/dlg/AddField.cxx
+++ b/reportdesign/source/ui/dlg/AddField.cxx
@@ -77,7 +77,7 @@ OAddFieldWindow::OAddFieldWindow(weld::Window* pParent, const 
uno::Reference< be
     m_xListBox->enable_drag_source(xHelper, DND_ACTION_COPYMOVE | 
DND_ACTION_LINK);
     m_xListBox->connect_drag_begin(LINK(this, OAddFieldWindow, DragBeginHdl));
 
-    m_xDialog->connect_toplevel_focus_changed(LINK(this, OAddFieldWindow, 
FocusChangeHdl));
+    m_xDialog->connect_container_focus_changed(LINK(this, OAddFieldWindow, 
FocusChangeHdl));
 
     m_xDialog->set_help_id(HID_RPT_FIELD_SEL_WIN);
 
@@ -117,7 +117,7 @@ OAddFieldWindow::~OAddFieldWindow()
         m_pContainerListener->dispose();
 }
 
-IMPL_LINK_NOARG(OAddFieldWindow, FocusChangeHdl, weld::Widget&, void)
+IMPL_LINK_NOARG(OAddFieldWindow, FocusChangeHdl, weld::Container&, void)
 {
     if (m_xDialog->has_toplevel_focus())
         m_xListBox->grab_focus();
diff --git a/reportdesign/source/ui/dlg/Navigator.cxx 
b/reportdesign/source/ui/dlg/Navigator.cxx
index ccda43cd6e6b..74b06b080cf3 100644
--- a/reportdesign/source/ui/dlg/Navigator.cxx
+++ b/reportdesign/source/ui/dlg/Navigator.cxx
@@ -818,14 +818,14 @@ ONavigator::ONavigator(weld::Window* pParent, 
OReportController& rController)
     m_pImpl.reset(new ONavigatorImpl(rController, *m_xBuilder));
     m_pImpl->m_xNavigatorTree->grab_focus();
 
-    m_xDialog->connect_toplevel_focus_changed(LINK(this, ONavigator, 
FocusChangeHdl));
+    m_xDialog->connect_container_focus_changed(LINK(this, ONavigator, 
FocusChangeHdl));
 }
 
 ONavigator::~ONavigator()
 {
 }
 
-IMPL_LINK_NOARG(ONavigator, FocusChangeHdl, weld::Widget&, void)
+IMPL_LINK_NOARG(ONavigator, FocusChangeHdl, weld::Container&, void)
 {
     if (m_xDialog->has_toplevel_focus())
         m_pImpl->m_xNavigatorTree->grab_focus();
@@ -833,5 +833,4 @@ IMPL_LINK_NOARG(ONavigator, FocusChangeHdl, weld::Widget&, 
void)
 
 } // rptui
 
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/source/ui/inc/AddField.hxx 
b/reportdesign/source/ui/inc/AddField.hxx
index db255fd4fd54..5a388d49ab29 100644
--- a/reportdesign/source/ui/inc/AddField.hxx
+++ b/reportdesign/source/ui/inc/AddField.hxx
@@ -69,7 +69,7 @@ class  OAddFieldWindow : public weld::GenericDialogController
     DECL_LINK( OnSelectHdl, weld::TreeView&, void );
     DECL_LINK( DragBeginHdl, bool&, bool );
     DECL_LINK( OnSortAction, const OString&, void );
-    DECL_LINK( FocusChangeHdl, weld::Widget&, void );
+    DECL_LINK( FocusChangeHdl, weld::Container&, void );
 
     void addToList(const css::uno::Sequence<OUString>& rEntries);
     void addToList(const css::uno::Reference<css::container::XNameAccess>& 
i_xColumns);
diff --git a/reportdesign/source/ui/inc/Navigator.hxx 
b/reportdesign/source/ui/inc/Navigator.hxx
index 5c28d240138c..eed3e529c00d 100644
--- a/reportdesign/source/ui/inc/Navigator.hxx
+++ b/reportdesign/source/ui/inc/Navigator.hxx
@@ -31,7 +31,7 @@ namespace rptui
         ONavigator(const ONavigator&) = delete;
         void operator =(const ONavigator&) = delete;
 
-        DECL_LINK(FocusChangeHdl, weld::Widget&, void);
+        DECL_LINK(FocusChangeHdl, weld::Container&, void);
 
     public:
         ONavigator(weld::Window* pParent, OReportController& rController);
diff --git a/sfx2/source/dialog/basedlgs.cxx b/sfx2/source/dialog/basedlgs.cxx
index c777ebed9c76..fcebc6ea041c 100644
--- a/sfx2/source/dialog/basedlgs.cxx
+++ b/sfx2/source/dialog/basedlgs.cxx
@@ -108,7 +108,7 @@ void SfxModelessDialogController::Init(SfxBindings 
*pBindinx, SfxChildWindow *pC
     If a ModelessDialog is enabled its ViewFrame will be activated.
     This is necessary by PluginInFrames.
 */
-IMPL_LINK_NOARG(SfxDialogController, FocusChangeHdl, weld::Widget&, void)
+IMPL_LINK_NOARG(SfxDialogController, FocusChangeHdl, weld::Container&, void)
 {
     if (m_xDialog->has_toplevel_focus())
         Activate();
@@ -207,7 +207,7 @@ SfxDialogController::SfxDialogController(weld::Widget* 
pParent, const OUString&
                                     && 
SfxViewShell::Current()->isLOKMobilePhone())
 {
     m_xDialog->SetInstallLOKNotifierHdl(LINK(this, SfxDialogController, 
InstallLOKNotifierHdl));
-    m_xDialog->connect_toplevel_focus_changed(LINK(this, SfxDialogController, 
FocusChangeHdl));
+    m_xDialog->connect_container_focus_changed(LINK(this, SfxDialogController, 
FocusChangeHdl));
 }
 
 IMPL_STATIC_LINK_NOARG(SfxDialogController, InstallLOKNotifierHdl, void*, 
vcl::ILibreOfficeKitNotifier*)
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index badc2ff188fd..02213a60f18e 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -470,10 +470,6 @@ public:
 
     virtual SystemEnvData get_system_data() const override;
 
-    virtual void connect_toplevel_focus_changed(const Link<weld::Widget&, 
void>& rLink) override;
-
-    virtual void HandleEventListener(VclWindowEvent& rEvent) override;
-
     virtual weld::ScreenShotCollection collect_screenshot_data() override;
 
     virtual VclPtr<VirtualDevice> screenshot() override;
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 81ceba3ccd11..18789ee73a77 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1435,23 +1435,6 @@ OString 
SalInstanceWindow::get_window_state(WindowStateMask nMask) const
 
 SystemEnvData SalInstanceWindow::get_system_data() const { return 
*m_xWindow->GetSystemData(); }
 
-void SalInstanceWindow::connect_toplevel_focus_changed(const 
Link<weld::Widget&, void>& rLink)
-{
-    ensure_event_listener();
-    weld::Window::connect_toplevel_focus_changed(rLink);
-}
-
-void SalInstanceWindow::HandleEventListener(VclWindowEvent& rEvent)
-{
-    if (rEvent.GetId() == VclEventId::WindowActivate
-        || rEvent.GetId() == VclEventId::WindowDeactivate)
-    {
-        signal_toplevel_focus_changed();
-        return;
-    }
-    SalInstanceContainer::HandleEventListener(rEvent);
-}
-
 VclPtr<VirtualDevice> SalInstanceWindow::screenshot()
 {
     SystemWindow* pSysWin = dynamic_cast<SystemWindow*>(m_xWindow.get());
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 7a58dd7d2ead..0a37e8175d86 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -4040,7 +4040,6 @@ class GtkInstanceWindow : public GtkInstanceContainer, 
public virtual weld::Wind
 private:
     GtkWindow* m_pWindow;
     rtl::Reference<SalGtkXWindow> m_xWindow; //uno api
-    gulong m_nToplevelFocusChangedSignalId;
 
     static gboolean help_pressed(GtkAccelGroup*, GObject*, guint, 
GdkModifierType, gpointer widget)
     {
@@ -4049,12 +4048,6 @@ private:
         return true;
     }
 
-    static void signalToplevelFocusChanged(GtkWindow*, GParamSpec*, gpointer 
widget)
-    {
-        GtkInstanceWindow* pThis = static_cast<GtkInstanceWindow*>(widget);
-        pThis->signal_toplevel_focus_changed();
-    }
-
     bool isPositioningAllowed() const
     {
         bool bPositioningAllowed = true;
@@ -4072,7 +4065,6 @@ public:
     GtkInstanceWindow(GtkWindow* pWindow, GtkInstanceBuilder* pBuilder, bool 
bTakeOwnership)
         : GtkInstanceContainer(GTK_CONTAINER(pWindow), pBuilder, 
bTakeOwnership)
         , m_pWindow(pWindow)
-        , m_nToplevelFocusChangedSignalId(0)
     {
         const bool bIsFrameWeld = pBuilder == nullptr;
         if (!bIsFrameWeld)
@@ -4232,27 +4224,6 @@ public:
         return aData.ToStr();
     }
 
-    virtual void connect_toplevel_focus_changed(const Link<weld::Widget&, 
void>& rLink) override
-    {
-        assert(!m_nToplevelFocusChangedSignalId);
-        m_nToplevelFocusChangedSignalId = g_signal_connect(m_pWindow, 
"notify::has-toplevel-focus", G_CALLBACK(signalToplevelFocusChanged), this);
-        weld::Window::connect_toplevel_focus_changed(rLink);
-    }
-
-    virtual void disable_notify_events() override
-    {
-        if (m_nToplevelFocusChangedSignalId)
-            g_signal_handler_block(m_pWidget, m_nToplevelFocusChangedSignalId);
-        GtkInstanceContainer::disable_notify_events();
-    }
-
-    virtual void enable_notify_events() override
-    {
-        GtkInstanceContainer::enable_notify_events();
-        if (m_nToplevelFocusChangedSignalId)
-            g_signal_handler_unblock(m_pWidget, 
m_nToplevelFocusChangedSignalId);
-    }
-
     virtual VclPtr<VirtualDevice> screenshot() override
     {
         // detect if we have to manually setup its size
@@ -4306,8 +4277,6 @@ public:
 
     virtual ~GtkInstanceWindow() override
     {
-        if (m_nToplevelFocusChangedSignalId)
-            g_signal_handler_disconnect(m_pWindow, 
m_nToplevelFocusChangedSignalId);
         if (m_xWindow.is())
             m_xWindow->clear();
     }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to