diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2020-06-15 19:03:09 +0200 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2020-06-29 15:15:25 +0200 |
commit | ed06c5f411769c22923ae1555f9555f2460a0780 (patch) | |
tree | a2420ebe96b088968a09acc0e2872b3fd1272dbc /vcl/jsdialog | |
parent | a40cb25a21d6d36ca227c77c5e58c102660bdd65 (diff) |
jsdialog: weld drawing area
Change-Id: I7bc75e3de99de84c59b798e4c4dad18550157e43
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96851
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97396
Tested-by: Jenkins
Diffstat (limited to 'vcl/jsdialog')
-rw-r--r-- | vcl/jsdialog/jsdialogbuilder.cxx | 61 |
1 files changed, 60 insertions, 1 deletions
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index 28eecea4d713..b678c34333b2 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -76,7 +76,26 @@ JSInstanceBuilder::JSInstanceBuilder(weld::Widget* pParent, const OUString& rUIR if (pRoot && pRoot->GetParent()) { m_aParentDialog = pRoot->GetParent()->GetParentWithLOKNotifier(); - m_nWindowId = m_aParentDialog->GetLOKWindowId(); + if (m_aParentDialog) + m_nWindowId = m_aParentDialog->GetLOKWindowId(); + InsertWindowToMap(m_nWindowId); + } +} + +JSInstanceBuilder::JSInstanceBuilder(vcl::Window* pParent, const OUString& rUIRoot, + const OUString& rUIFile, + const css::uno::Reference<css::frame::XFrame>& rFrame) + : SalInstanceBuilder(pParent, rUIRoot, rUIFile, rFrame) + , m_nWindowId(0) + , m_aParentDialog(nullptr) + , m_bHasTopLevelDialog(false) +{ + vcl::Window* pRoot = m_xBuilder->get_widget_root(); + if (pRoot && pRoot->GetParent()) + { + m_aParentDialog = pRoot->GetParent()->GetParentWithLOKNotifier(); + if (m_aParentDialog) + m_nWindowId = m_aParentDialog->GetLOKWindowId(); InsertWindowToMap(m_nWindowId); } } @@ -272,6 +291,24 @@ std::unique_ptr<weld::CheckButton> JSInstanceBuilder::weld_check_button(const OS return pWeldWidget; } +std::unique_ptr<weld::DrawingArea> +JSInstanceBuilder::weld_drawing_area(const OString& id, const a11yref& rA11yImpl, + FactoryFunction pUITestFactoryFunction, void* pUserData, + bool bTakeOwnership) +{ + VclDrawingArea* pArea = m_xBuilder->get<VclDrawingArea>(id); + auto pWeldWidget = pArea + ? std::make_unique<JSDrawingArea>( + m_bHasTopLevelDialog ? m_aOwnedToplevel : m_aParentDialog, pArea, + this, rA11yImpl, pUITestFactoryFunction, pUserData, bTakeOwnership) + : nullptr; + + if (pWeldWidget) + RememberWidget(id, pWeldWidget.get()); + + return pWeldWidget; +} + weld::MessageDialog* JSInstanceBuilder::CreateMessageDialog(weld::Widget* pParent, VclMessageType eMessageType, VclButtonsType eButtonType, @@ -459,4 +496,26 @@ void JSCheckButton::set_active(bool active) notifyDialogState(); } +JSDrawingArea::JSDrawingArea(VclPtr<vcl::Window> aOwnedToplevel, VclDrawingArea* pDrawingArea, + SalInstanceBuilder* pBuilder, const a11yref& rAlly, + FactoryFunction pUITestFactoryFunction, void* pUserData, + bool bTakeOwnership) + : SalInstanceDrawingArea(pDrawingArea, pBuilder, rAlly, pUITestFactoryFunction, pUserData, + bTakeOwnership) + , JSDialogSender(aOwnedToplevel) +{ +} + +void JSDrawingArea::queue_draw() +{ + SalInstanceDrawingArea::queue_draw(); + notifyDialogState(); +} + +void JSDrawingArea::queue_draw_area(int x, int y, int width, int height) +{ + SalInstanceDrawingArea::queue_draw_area(x, y, width, height); + notifyDialogState(); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ |