diff options
author | Pranav Kant <pranavk@collabora.co.uk> | 2017-12-01 14:27:21 +0530 |
---|---|---|
committer | Pranav Kant <pranavk@collabora.co.uk> | 2017-12-04 17:14:03 +0530 |
commit | b1bcc70d2a5a51d2cb4b2e9e2a8e6641719fe18b (patch) | |
tree | 0347b8a69436f99c889b57b9072fc34fffaaea63 | |
parent | ae412b57e3f7866e24b120f0afb8ac80618a8d07 (diff) |
lokdialog: Merge dialog & dialog child mouse event APIs into one
Change-Id: I91aaa6a58f33dd2d817e02533de96e0c8191f2ca
-rw-r--r-- | desktop/source/lib/init.cxx | 46 | ||||
-rw-r--r-- | include/LibreOfficeKit/LibreOfficeKit.h | 20 | ||||
-rw-r--r-- | include/LibreOfficeKit/LibreOfficeKit.hxx | 31 | ||||
-rw-r--r-- | include/vcl/window.hxx | 3 | ||||
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx | 54 | ||||
-rw-r--r-- | vcl/source/window/window.cxx | 36 |
6 files changed, 54 insertions, 136 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 4e0da17fa091..b5bc0f56a845 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -556,7 +556,7 @@ static void doc_postMouseEvent (LibreOfficeKitDocument* pThis, int nCount, int nButtons, int nModifier); -static void doc_postDialogMouseEvent (LibreOfficeKitDocument* pThis, +static void doc_postWindowMouseEvent (LibreOfficeKitDocument* pThis, unsigned nLOKWindowId, int nType, int nX, @@ -564,14 +564,6 @@ static void doc_postDialogMouseEvent (LibreOfficeKitDocument* pThis, int nCount, int nButtons, int nModifier); -static void doc_postDialogChildMouseEvent (LibreOfficeKitDocument* pThis, - unsigned nLOKWindowId, - int nType, - int nX, - int nY, - int nCount, - int nButtons, - int nModifier); static void doc_postUnoCommand(LibreOfficeKitDocument* pThis, const char* pCommand, const char* pArguments, @@ -646,8 +638,7 @@ LibLODocument_Impl::LibLODocument_Impl(const uno::Reference <css::lang::XCompone m_pDocumentClass->postKeyEvent = doc_postKeyEvent; m_pDocumentClass->postWindowKeyEvent = doc_postWindowKeyEvent; m_pDocumentClass->postMouseEvent = doc_postMouseEvent; - m_pDocumentClass->postDialogMouseEvent = doc_postDialogMouseEvent; - m_pDocumentClass->postDialogChildMouseEvent = doc_postDialogChildMouseEvent; + m_pDocumentClass->postWindowMouseEvent = doc_postWindowMouseEvent; m_pDocumentClass->postUnoCommand = doc_postUnoCommand; m_pDocumentClass->setTextSelection = doc_setTextSelection; m_pDocumentClass->getTextSelection = doc_getTextSelection; @@ -2429,7 +2420,7 @@ static void doc_postMouseEvent(LibreOfficeKitDocument* pThis, int nType, int nX, } } -static void doc_postDialogMouseEvent(LibreOfficeKitDocument* /*pThis*/, unsigned nLOKWindowId, int nType, int nX, int nY, int nCount, int nButtons, int nModifier) +static void doc_postWindowMouseEvent(LibreOfficeKitDocument* /*pThis*/, unsigned nLOKWindowId, int nType, int nX, int nY, int nCount, int nButtons, int nModifier) { SolarMutexGuard aGuard; @@ -2460,37 +2451,6 @@ static void doc_postDialogMouseEvent(LibreOfficeKitDocument* /*pThis*/, unsigned } } -static void doc_postDialogChildMouseEvent(LibreOfficeKitDocument* /*pThis*/, unsigned nLOKWindowId, int nType, int nX, int nY, int nCount, int nButtons, int nModifier) -{ - SolarMutexGuard aGuard; - - VclPtr<Window> pWindow = vcl::Window::FindLOKWindow(nLOKWindowId); - if (!pWindow) - { - gImpl->maLastExceptionMsg = "Document doesn't support dialog rendering, or window not found."; - return; - } - - Point aPos(nX, nY); - MouseEvent aEvent(aPos, nCount, MouseEventModifiers::SIMPLECLICK, nButtons, nModifier); - - switch (nType) - { - case LOK_MOUSEEVENT_MOUSEBUTTONDOWN: - pWindow->LogicMouseButtonDownChild(aEvent); - break; - case LOK_MOUSEEVENT_MOUSEBUTTONUP: - pWindow->LogicMouseButtonUpChild(aEvent); - break; - case LOK_MOUSEEVENT_MOUSEMOVE: - pWindow->LogicMouseMoveChild(aEvent); - break; - default: - assert(false); - break; - } -} - static void doc_setTextSelection(LibreOfficeKitDocument* pThis, int nType, int nX, int nY) { SolarMutexGuard aGuard; diff --git a/include/LibreOfficeKit/LibreOfficeKit.h b/include/LibreOfficeKit/LibreOfficeKit.h index 8db531650dbf..f9c9e22a730e 100644 --- a/include/LibreOfficeKit/LibreOfficeKit.h +++ b/include/LibreOfficeKit/LibreOfficeKit.h @@ -270,7 +270,7 @@ struct _LibreOfficeKitDocumentClass int* pArray, size_t nSize); - /// Paints dialog with given dialog id to the buffer + /// Paints window with given id to the buffer /// @see lok::Document::paintWindow(). void (*paintWindow) (LibreOfficeKitDocument* pThis, unsigned nWindowId, unsigned char* pBuffer, @@ -282,14 +282,14 @@ struct _LibreOfficeKitDocumentClass /// @see lok::Document::postWindowKeyEvent(). void (*postWindowKeyEvent) (LibreOfficeKitDocument* pThis, - unsigned nDialogId, + unsigned nWindowId, int nType, int nCharCode, int nKeyCode); - /// @see lok::Document::postDialogMouseEvent(). - void (*postDialogMouseEvent) (LibreOfficeKitDocument* pThis, - unsigned nDialogId, + /// @see lok::Document::postWindowMouseEvent(). + void (*postWindowMouseEvent) (LibreOfficeKitDocument* pThis, + unsigned nWindowId, int nType, int nX, int nY, @@ -297,16 +297,6 @@ struct _LibreOfficeKitDocumentClass int nButtons, int nModifier); - /// @see lok::Document::postDialogChildMouseEvent(). - void (*postDialogChildMouseEvent) (LibreOfficeKitDocument* pThis, - unsigned nDialogId, - int nType, - int nX, - int nY, - int nCount, - int nButtons, - int nModifier); - #endif // defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY }; diff --git a/include/LibreOfficeKit/LibreOfficeKit.hxx b/include/LibreOfficeKit/LibreOfficeKit.hxx index 4a7ed2fddf17..835710e07e91 100644 --- a/include/LibreOfficeKit/LibreOfficeKit.hxx +++ b/include/LibreOfficeKit/LibreOfficeKit.hxx @@ -254,14 +254,14 @@ public: /** * Posts a keyboard event to the dialog * - * @param nDialogId Dialog id on which key event should be posted + * @param nWindowId * @param nType Event type, like press or release. * @param nCharCode contains the Unicode character generated by this event or 0 * @param nKeyCode contains the integer code representing the key of the event (non-zero for control keys) */ - void postWindowKeyEvent(unsigned nDialogId, int nType, int nCharCode, int nKeyCode) + void postWindowKeyEvent(unsigned nWindowId, int nType, int nCharCode, int nKeyCode) { - mpDoc->pClass->postWindowKeyEvent(mpDoc, nDialogId, nType, nCharCode, nKeyCode); + mpDoc->pClass->postWindowKeyEvent(mpDoc, nWindowId, nType, nCharCode, nKeyCode); } /** @@ -280,25 +280,9 @@ public: } /** - * Posts a mouse event to the dialog with given id. + * Posts a mouse event to the window with given id. * - * @param nDialogId Dialog id where mouse event is to be posted - * @param nType Event type, like down, move or up. - * @param nX horizontal position in document coordinates - * @param nY vertical position in document coordinates - * @param nCount number of clicks: 1 for single click, 2 for double click - * @param nButtons: which mouse buttons: 1 for left, 2 for middle, 4 right - * @param nModifier: which keyboard modifier: (see include/vcl/vclenum.hxx for possible values) - */ - void postDialogMouseEvent(unsigned nDialogId, int nType, int nX, int nY, int nCount, int nButtons, int nModifier) - { - mpDoc->pClass->postDialogMouseEvent(mpDoc, nDialogId, nType, nX, nY, nCount, nButtons, nModifier); - } - - /** - * Posts a mouse event to the child of a dialog with given id. - * - * @param nDialogId Dialog id + * @param nWindowId * @param nType Event type, like down, move or up. * @param nX horizontal position in document coordinates * @param nY vertical position in document coordinates @@ -306,12 +290,11 @@ public: * @param nButtons: which mouse buttons: 1 for left, 2 for middle, 4 right * @param nModifier: which keyboard modifier: (see include/vcl/vclenum.hxx for possible values) */ - void postDialogChildMouseEvent(unsigned nDialogId, int nType, int nX, int nY, int nCount, int nButtons, int nModifier) + void postWindowMouseEvent(unsigned nWindowId, int nType, int nX, int nY, int nCount, int nButtons, int nModifier) { - mpDoc->pClass->postDialogChildMouseEvent(mpDoc, nDialogId, nType, nX, nY, nCount, nButtons, nModifier); + mpDoc->pClass->postWindowMouseEvent(mpDoc, nWindowId, nType, nX, nY, nCount, nButtons, nModifier); } - /** * Posts an UNO command to the document. * diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx index f7c4e6e09dfd..9af0a918435f 100644 --- a/include/vcl/window.hxx +++ b/include/vcl/window.hxx @@ -1221,9 +1221,6 @@ public: void LogicMouseButtonDown(const MouseEvent& rMouseEvent); void LogicMouseButtonUp(const MouseEvent& rMouseEvent); void LogicMouseMove(const MouseEvent& rMouseEvent); - void LogicMouseButtonDownChild(const MouseEvent& rMouseEvent); - void LogicMouseButtonUpChild(const MouseEvent& rMouseEvent); - void LogicMouseMoveChild(const MouseEvent& rMouseEvent); void LOKKeyInput(const KeyEvent& rKeyEvent); void LOKKeyUp(const KeyEvent& rKeyEvent); diff --git a/libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx b/libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx index f6fddbba73d0..5db79514aa4a 100644 --- a/libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx @@ -162,7 +162,7 @@ gtv_lok_dialog_signal_button(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve break; } priv->m_nLastButtonPressed = nEventButton; - pDocument->pClass->postDialogMouseEvent(pDocument, + pDocument->pClass->postWindowMouseEvent(pDocument, priv->dialogid, LOK_MOUSEEVENT_MOUSEBUTTONDOWN, (pEvent->x), @@ -193,7 +193,7 @@ gtv_lok_dialog_signal_button(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve break; } priv->m_nLastButtonPressed = nEventButton; - pDocument->pClass->postDialogMouseEvent(pDocument, + pDocument->pClass->postWindowMouseEvent(pDocument, priv->dialogid, LOK_MOUSEEVENT_MOUSEBUTTONUP, (pEvent->x), @@ -223,7 +223,7 @@ gtv_lok_dialog_signal_motion(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve (int)pixelToTwip(pEvent->x), (int)pixelToTwip(pEvent->y)); - pDocument->pClass->postDialogMouseEvent(pDocument, + pDocument->pClass->postWindowMouseEvent(pDocument, priv->dialogid, LOK_MOUSEEVENT_MOUSEMOVE, (pEvent->x), @@ -541,14 +541,14 @@ gtv_lok_dialog_floating_win_signal_button(GtkWidget* /*pDialogChildDrawingArea*/ break; } priv->m_nChildLastButtonPressed = nEventButton; - pDocument->pClass->postDialogChildMouseEvent(pDocument, - priv->m_nChildId, - LOK_MOUSEEVENT_MOUSEBUTTONDOWN, - (pEvent->x), - (pEvent->y), - nCount, - nEventButton, - priv->m_nChildKeyModifier); + pDocument->pClass->postWindowMouseEvent(pDocument, + priv->m_nChildId, + LOK_MOUSEEVENT_MOUSEBUTTONDOWN, + (pEvent->x), + (pEvent->y), + nCount, + nEventButton, + priv->m_nChildKeyModifier); break; } @@ -572,14 +572,14 @@ gtv_lok_dialog_floating_win_signal_button(GtkWidget* /*pDialogChildDrawingArea*/ break; } priv->m_nChildLastButtonPressed = nEventButton; - pDocument->pClass->postDialogChildMouseEvent(pDocument, - priv->m_nChildId, - LOK_MOUSEEVENT_MOUSEBUTTONUP, - (pEvent->x), - (pEvent->y), - nCount, - nEventButton, - priv->m_nChildKeyModifier); + pDocument->pClass->postWindowMouseEvent(pDocument, + priv->m_nChildId, + LOK_MOUSEEVENT_MOUSEBUTTONUP, + (pEvent->x), + (pEvent->y), + nCount, + nEventButton, + priv->m_nChildKeyModifier); break; } default: @@ -602,14 +602,14 @@ gtv_lok_dialog_floating_win_signal_motion(GtkWidget* /*pDialogDrawingArea*/, Gdk (int)pixelToTwip(pEvent->x), (int)pixelToTwip(pEvent->y)); - pDocument->pClass->postDialogChildMouseEvent(pDocument, - priv->m_nChildId, - LOK_MOUSEEVENT_MOUSEMOVE, - (pEvent->x), - (pEvent->y), - 1, - priv->m_nChildLastButtonPressed, - priv->m_nChildKeyModifier); + pDocument->pClass->postWindowMouseEvent(pDocument, + priv->m_nChildId, + LOK_MOUSEEVENT_MOUSEMOVE, + (pEvent->x), + (pEvent->y), + 1, + priv->m_nChildLastButtonPressed, + priv->m_nChildKeyModifier); return FALSE; } diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index dcc91fda85de..f93ee26e901e 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -3223,7 +3223,10 @@ void Window::LogicMouseButtonDown(const MouseEvent& rMouseEvent) // When we're not doing tiled rendering, then positions must be passed as pixels. assert(comphelper::LibreOfficeKit::isActive()); - ImplWindowFrameProc(this, SalEvent::ExternalMouseButtonDown, &rMouseEvent); + if (dynamic_cast<FloatingWindow*>(this) != nullptr) + ImplWindowFrameProc(ImplGetBorderWindow(), SalEvent::ExternalMouseButtonDown, &rMouseEvent); + else + ImplWindowFrameProc(this, SalEvent::ExternalMouseButtonDown, &rMouseEvent); } void Window::LogicMouseButtonUp(const MouseEvent& rMouseEvent) @@ -3231,7 +3234,10 @@ void Window::LogicMouseButtonUp(const MouseEvent& rMouseEvent) // When we're not doing tiled rendering, then positions must be passed as pixels. assert(comphelper::LibreOfficeKit::isActive()); - ImplWindowFrameProc(this, SalEvent::ExternalMouseButtonUp, &rMouseEvent); + if (dynamic_cast<FloatingWindow*>(this) != nullptr) + ImplWindowFrameProc(ImplGetBorderWindow(), SalEvent::ExternalMouseButtonUp, &rMouseEvent); + else + ImplWindowFrameProc(this, SalEvent::ExternalMouseButtonUp, &rMouseEvent); } void Window::LogicMouseMove(const MouseEvent& rMouseEvent) @@ -3239,28 +3245,10 @@ void Window::LogicMouseMove(const MouseEvent& rMouseEvent) // When we're not doing tiled rendering, then positions must be passed as pixels. assert(comphelper::LibreOfficeKit::isActive()); - ImplWindowFrameProc(this, SalEvent::ExternalMouseMove, &rMouseEvent); -} - -void Window::LogicMouseButtonDownChild(const MouseEvent& rMouseEvent) -{ - assert(comphelper::LibreOfficeKit::isActive()); - - ImplWindowFrameProc(ImplGetBorderWindow(), SalEvent::ExternalMouseButtonDown, &rMouseEvent); -} - -void Window::LogicMouseButtonUpChild(const MouseEvent& rMouseEvent) -{ - assert(comphelper::LibreOfficeKit::isActive()); - - ImplWindowFrameProc(ImplGetBorderWindow(), SalEvent::ExternalMouseButtonUp, &rMouseEvent); -} - -void Window::LogicMouseMoveChild(const MouseEvent& rMouseEvent) -{ - assert(comphelper::LibreOfficeKit::isActive()); - - ImplWindowFrameProc(ImplGetBorderWindow(), SalEvent::ExternalMouseMove, &rMouseEvent); + if (dynamic_cast<FloatingWindow*>(this) != nullptr) + ImplWindowFrameProc(ImplGetBorderWindow(), SalEvent::ExternalMouseMove, &rMouseEvent); + else + ImplWindowFrameProc(this, SalEvent::ExternalMouseMove, &rMouseEvent); } void Window::LOKKeyInput(const KeyEvent& rKeyEvent) |