summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-03-20 21:18:04 +0000
committerCaolán McNamara <caolanm@redhat.com>2019-03-22 14:20:43 +0100
commit7d0bd54bad1782f74c156aa667e875c33efee0c1 (patch)
tree929357474beb322c71dc13fec316bef940d67308 /include
parentRemove non-existing files from solenv/clang-format/blacklist (diff)
downloadcore-7d0bd54bad1782f74c156aa667e875c33efee0c1.tar.gz
core-7d0bd54bad1782f74c156aa667e875c33efee0c1.zip
refactor into a shareable base class
Change-Id: I5eb1f2b6b7b2dbc3bc675845730cb3aef1cab5f0 Reviewed-on: https://gerrit.libreoffice.org/69528 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/sfx2/basedlgs.hxx23
-rw-r--r--include/sfx2/childwin.hxx6
2 files changed, 21 insertions, 8 deletions
diff --git a/include/sfx2/basedlgs.hxx b/include/sfx2/basedlgs.hxx
index 6b86abed0b01..893481e2d4d5 100644
--- a/include/sfx2/basedlgs.hxx
+++ b/include/sfx2/basedlgs.hxx
@@ -111,8 +111,21 @@ class SFX2_DLLPUBLIC SfxDialogController : public weld::GenericDialogController
{
private:
DECL_DLLPRIVATE_STATIC_LINK(SfxDialogController, InstallLOKNotifierHdl, void*, vcl::ILibreOfficeKitNotifier*);
+
+ DECL_DLLPRIVATE_LINK(FocusInHdl, weld::Widget&, void);
+ DECL_DLLPRIVATE_LINK(FocusOutHdl, weld::Widget&, void);
+
public:
SfxDialogController(weld::Widget* pParent, const OUString& rUIFile, const OString& rDialogId);
+ // dialog gets focus
+ virtual void Activate() {}
+ // dialog loses focus
+ virtual void DeActivate() {}
+
+ // when the dialog has an associated SfxChildWin, typically for Modeless interaction
+ virtual void ChildWinDispose() {} // called from the associated SfxChildWin dtor
+ virtual void Close() {} // called by the SfxChildWin when the dialog is closed
+ virtual void EndDialog(); // called by the SfxChildWin to close the dialog
};
class SfxModelessDialog_Impl;
@@ -126,8 +139,6 @@ class SFX2_DLLPUBLIC SfxModelessDialogController : public SfxDialogController
void Init(SfxBindings *pBindinx, SfxChildWindow *pCW);
- DECL_DLLPRIVATE_LINK(FocusInHdl, weld::Widget&, void);
- DECL_DLLPRIVATE_LINK(FocusOutHdl, weld::Widget&, void);
protected:
SfxModelessDialogController(SfxBindings*, SfxChildWindow* pChildWin,
weld::Window* pParent, const OUString& rUIXMLDescription, const OString& rID);
@@ -135,11 +146,13 @@ protected:
public:
void FillInfo(SfxChildWinInfo&) const;
- virtual void Activate() {}
void Initialize (SfxChildWinInfo const * pInfo);
- void Close();
void DeInit();
- void EndDialog();
+ virtual void Close() override;
+ virtual void EndDialog() override;
+ virtual void Activate() override;
+ virtual void DeActivate() override;
+ virtual void ChildWinDispose() override;
SfxBindings& GetBindings() { return *m_pBindings; }
};
diff --git a/include/sfx2/childwin.hxx b/include/sfx2/childwin.hxx
index b07c6d1cd983..8d99f20642de 100644
--- a/include/sfx2/childwin.hxx
+++ b/include/sfx2/childwin.hxx
@@ -146,7 +146,7 @@ class SFX2_DLLPUBLIC SfxChildWindow
VclPtr<vcl::Window> pParent; // parent window ( Topwindow )
sal_uInt16 const nType; // ChildWindow-Id
VclPtr<vcl::Window> pWindow; // actual contents
- std::shared_ptr<SfxModelessDialogController> xController; // actual contents
+ std::shared_ptr<SfxDialogController> xController; // actual contents
SfxChildAlignment eChildAlignment; // Current css::drawing::Alignment
std::unique_ptr< SfxChildWindow_Impl> pImpl; // Implementation data
std::unique_ptr<SfxChildWindowContext> pContext; // With context-sensitive ChildWindows:
@@ -162,9 +162,9 @@ public:
void Destroy();
vcl::Window* GetWindow() const
{ return pWindow; }
- void SetController(std::shared_ptr<SfxModelessDialogController> controller) { xController = controller; }
+ void SetController(std::shared_ptr<SfxDialogController> controller) { xController = controller; }
void ClearController() { xController.reset(); }
- std::shared_ptr<SfxModelessDialogController>& GetController() { return xController; }
+ std::shared_ptr<SfxDialogController>& GetController() { return xController; }
vcl::Window* GetParent() const
{ return pParent; }
SfxChildAlignment GetAlignment() const