From 2ead533d2383083925537832b473e3264811d454 Mon Sep 17 00:00:00 2001 From: Henry Castro Date: Thu, 18 Apr 2019 18:10:13 -0400 Subject: lok: allow paste content to popup dialog Change-Id: I1893d52df505bc43428c37a624ca05c569ba1bc0 Reviewed-on: https://gerrit.libreoffice.org/70958 Tested-by: Jenkins Reviewed-by: Henry Castro --- desktop/qa/desktop_lib/test_desktop_lib.cxx | 51 +++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'desktop/qa') diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx index a08d476a8bac..e18cda94bb7d 100644 --- a/desktop/qa/desktop_lib/test_desktop_lib.cxx +++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx @@ -22,7 +22,11 @@ #include +#include #include +#include +#include +#include #include #include #include @@ -130,6 +134,7 @@ public: void testInsertCertificate_PEM_DOCX(); void testSignDocument_PEM_PDF(); void testTextSelectionHandles(); + void testDialogPaste(); void testABI(); CPPUNIT_TEST_SUITE(DesktopLOKTest); @@ -180,6 +185,7 @@ public: CPPUNIT_TEST(testInsertCertificate_PEM_DOCX); CPPUNIT_TEST(testSignDocument_PEM_PDF); CPPUNIT_TEST(testTextSelectionHandles); + CPPUNIT_TEST(testDialogPaste); CPPUNIT_TEST(testABI); CPPUNIT_TEST_SUITE_END(); @@ -207,6 +213,23 @@ public: }; +static Control* GetFocusControl(vcl::Window const * pParent) +{ + sal_uInt16 nChildren = pParent->GetChildCount(); + for (sal_uInt16 nChild = 0; nChild < nChildren; ++nChild) + { + vcl::Window* pChild = pParent->GetChild( nChild ); + Control* pCtrl = dynamic_cast(pChild); + if (pCtrl && pCtrl->HasControlFocus()) + return pCtrl; + + Control* pSubCtrl = GetFocusControl( pChild ); + if (pSubCtrl) + return pSubCtrl; + } + return nullptr; +} + LibLODocument_Impl* DesktopLOKTest::loadDoc(const char* pName, LibreOfficeKitDocumentType eType) { OUString aFileURL; @@ -2616,6 +2639,34 @@ void DesktopLOKTest::testTextSelectionHandles() comphelper::LibreOfficeKit::setActive(false); } +void DesktopLOKTest::testDialogPaste() +{ + comphelper::LibreOfficeKit::setActive(); + LibLODocument_Impl* pDocument = loadDoc("blank_text.odt"); + pDocument->pClass->postUnoCommand(pDocument, ".uno:HyperlinkDialog", nullptr, false); + Scheduler::ProcessEventsToIdle(); + + SfxViewShell* pViewShell = SfxViewShell::Current(); + pViewShell->GetViewFrame()->GetBindings().Update(); + + VclPtr pWindow(Application::GetActiveTopWindow()); + CPPUNIT_ASSERT(pWindow); + + pDocument->pClass->postWindow(pDocument, pWindow->GetLOKWindowId(), LOK_WINDOW_PASTE, + "{ \"MimeType\" : { \"type\" : \"string\", \"value\" : \"text/plain;charset=utf-8\" }, \"Data\" : { \"type\" : \"[]byte\", \"value\" : \"www.softwarelibre.org.bo\" } }"); + Scheduler::ProcessEventsToIdle(); + + Control* pCtrlFocused = GetFocusControl(pWindow.get()); + CPPUNIT_ASSERT(pCtrlFocused); + ComboBox* pCtrlURL = dynamic_cast(pCtrlFocused); + CPPUNIT_ASSERT(pCtrlURL); + CPPUNIT_ASSERT_EQUAL(OUString("www.softwarelibre.org.bo"), pCtrlURL->GetText()); + + static_cast(pWindow.get())->Close(); + Scheduler::ProcessEventsToIdle(); + comphelper::LibreOfficeKit::setActive(false); +} + namespace { constexpr size_t classOffset(int i) -- cgit