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 <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/include/sfx2/basedlgs.hxx b/include/sfx2/basedlgs.hxx
index 92da31e..2d32406 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 a42dd09..a5590b7 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 e7e8e1b..80c868e 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 ccda43c..74b06b0 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 db255fd..5a388d4 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 5c28d24..eed3e52 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 c777ebe..fcebc6e 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 badc2ff..02213a6 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 81ceba3..18789ee 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 7a58dd7..0a37e81 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();
    }