[Libreoffice-commits] core.git: Branch 'feature/tiled-editing' - include/LibreOfficeKit libreofficekit/source sw/source
Miklos Vajna
vmiklos at collabora.co.uk
Wed Feb 11 00:21:16 PST 2015
include/LibreOfficeKit/LibreOfficeKit.h | 4 +++-
libreofficekit/source/gtk/lokdocview.c | 3 +--
sw/source/uibase/docvw/edtwin.cxx | 4 +++-
sw/source/uibase/inc/edtwin.hxx | 2 +-
sw/source/uibase/uno/unotxdoc.cxx | 7 +++++--
5 files changed, 13 insertions(+), 7 deletions(-)
New commits:
commit 50da60dbe4fd8f0829676e0ef5a3acacf55802bb
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Feb 11 09:19:06 2015 +0100
LOK: add LOK_SETTEXTSELECTION_RESET
So clients can perform a single method call to adjust the cursor
position (when it's not a range), instead of sending two mouse clicks.
This is mostly to be consistent, so that adjusting the cursor's middle
and start/end handles all result in a setTextSelection() LOK call.
Change-Id: I09eb0811887d173ea9ad7d125a2afb2c9e5c918c
diff --git a/include/LibreOfficeKit/LibreOfficeKit.h b/include/LibreOfficeKit/LibreOfficeKit.h
index eccf19b..9c5cca5 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.h
+++ b/include/LibreOfficeKit/LibreOfficeKit.h
@@ -122,7 +122,9 @@ typedef enum
/// The start of selection is to be adjusted.
LOK_SETTEXTSELECTION_START,
/// The end of selection is to be adjusted.
- LOK_SETTEXTSELECTION_END
+ LOK_SETTEXTSELECTION_END,
+ /// Both the start and the end of selection is to be adjusted.
+ LOK_SETTEXTSELECTION_RESET
}
LibreOfficeKitSetTextSelectionType;
diff --git a/libreofficekit/source/gtk/lokdocview.c b/libreofficekit/source/gtk/lokdocview.c
index 61d107c..132b2d4 100644
--- a/libreofficekit/source/gtk/lokdocview.c
+++ b/libreofficekit/source/gtk/lokdocview.c
@@ -74,8 +74,7 @@ gboolean lcl_signalMotion(GtkWidget* pEventBox, GdkEventButton* pEvent, LOKDocVi
{
g_info("lcl_signalMotion: dragging the middle handle");
lcl_getDragPoint(&pDocView->m_aHandleMiddleRect, pEvent, &aPoint);
- pDocView->pDocument->pClass->postMouseEvent(pDocView->pDocument, LOK_MOUSEEVENT_MOUSEBUTTONDOWN, pixelToTwip(aPoint.x), pixelToTwip(aPoint.y), 1);
- pDocView->pDocument->pClass->postMouseEvent(pDocView->pDocument, LOK_MOUSEEVENT_MOUSEBUTTONUP, pixelToTwip(aPoint.x), pixelToTwip(aPoint.y), 1);
+ pDocView->pDocument->pClass->setTextSelection(pDocView->pDocument, LOK_SETTEXTSELECTION_RESET, pixelToTwip(aPoint.x), pixelToTwip(aPoint.y));
}
else if (pDocView->m_bInDragStartHandle)
{
diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx
index bb59217..53a1abb 100644
--- a/sw/source/uibase/docvw/edtwin.cxx
+++ b/sw/source/uibase/docvw/edtwin.cxx
@@ -6256,11 +6256,13 @@ void SwEditWin::LogicMouseButtonUp(const MouseEvent& rMouseEvent)
MouseButtonUp(rMouseEvent);
}
-void SwEditWin::SetCursorLogicPosition(bool bPoint, const Point& rPosition)
+void SwEditWin::SetCursorLogicPosition(const Point& rPosition, bool bPoint, bool bClearMark)
{
// Not an SwWrtShell, as that would make SwCrsrShell::GetCrsr() inaccessible.
SwEditShell& rShell = m_rView.GetWrtShell();
SwMvContext aMvContext(&rShell);
+ if (bClearMark)
+ rShell.ClearMark();
// If the mark is to be updated, then exchange the point and mark before
// and after, as we can't easily set the mark.
if (!bPoint)
diff --git a/sw/source/uibase/inc/edtwin.hxx b/sw/source/uibase/inc/edtwin.hxx
index 9af9446..4e8ff48 100644
--- a/sw/source/uibase/inc/edtwin.hxx
+++ b/sw/source/uibase/inc/edtwin.hxx
@@ -306,7 +306,7 @@ public:
/// Same as MouseButtonUp(), but coordinates are in logic unit.
void LogicMouseButtonUp(const MouseEvent& rMouseEvent);
/// Allows adjusting the point or mark of the selection to a document coordinate.
- void SetCursorLogicPosition(bool bPoint, const Point& rPosition);
+ void SetCursorLogicPosition(const Point& rPosition, bool bPoint, bool bClearMark);
};
#endif
diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx
index 3a98cd9..88320e8 100644
--- a/sw/source/uibase/uno/unotxdoc.cxx
+++ b/sw/source/uibase/uno/unotxdoc.cxx
@@ -3202,10 +3202,13 @@ void SwXTextDocument::setTextSelection(int nType, int nX, int nY)
switch (nType)
{
case LOK_SETTEXTSELECTION_START:
- rEditWin.SetCursorLogicPosition(/*bPoint=*/false, Point(nX, nY));
+ rEditWin.SetCursorLogicPosition(Point(nX, nY), /*bPoint=*/false, /*bClearMark=*/false);
break;
case LOK_SETTEXTSELECTION_END:
- rEditWin.SetCursorLogicPosition(/*bPoint=*/true, Point(nX, nY));
+ rEditWin.SetCursorLogicPosition(Point(nX, nY), /*bPoint=*/true, /*bClearMark=*/false);
+ break;
+ case LOK_SETTEXTSELECTION_RESET:
+ rEditWin.SetCursorLogicPosition(Point(nX, nY), /*bPoint=*/true, /*bClearMark=*/true);
break;
default:
assert(false);
More information about the Libreoffice-commits
mailing list