libreofficekit/source/gtk/lokdocview.cxx | 102 ++++++++++++++++--------------- svx/source/svdraw/svdmrkv.cxx | 12 +++ 2 files changed, 67 insertions(+), 47 deletions(-)
New commits: commit 2879d21b1ef16fd0a350e0cc5ad99c5b42b02285 Author: Miklos Vajna <[email protected]> Date: Tue Mar 24 10:01:55 2015 +0100 svx tiled rendering: fix Impress graphic selection With this, shapes on Impress slides can be selected and the graphic selection appears correctly around the expected shape. Change-Id: Ie819918a34952e8182553b26ff892fe9b5ae0258 diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx index 060472d..eda88b5 100644 --- a/svx/source/svdraw/svdmrkv.cxx +++ b/svx/source/svdraw/svdmrkv.cxx @@ -710,7 +710,19 @@ void SdrMarkView::SetMarkHandles() if (aRect.IsEmpty()) sRectangle = "EMPTY"; else + { + // In case the map mode is in 100th MM, then need to convert the coordinates over to twips for LOK. + if (pMarkedPV) + { + if (OutputDevice* pOutputDevice = pMarkedPV->GetView().GetFirstOutputDevice()) + { + if (pOutputDevice->GetMapMode().GetMapUnit() == MAP_100TH_MM) + aRect = OutputDevice::LogicToLogic(aRect, MAP_100TH_MM, MAP_TWIP); + } + } + sRectangle = aRect.toString(); + } GetModel()->libreOfficeKitCallback(LOK_CALLBACK_GRAPHIC_SELECTION, sRectangle.getStr()); } commit 38ffc94114ee3461a8c4fe7f7978e94ec7caac7c Author: Miklos Vajna <[email protected]> Date: Tue Mar 24 09:30:47 2015 +0100 lokdocview: lcl_onDestroy() -> LOKDocView_Impl::destroy() Change-Id: I0910afdb6a0d031cb64f545b5b2c0d16f18a0f04 diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index 66568ca..35b23a2 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -93,58 +93,67 @@ struct LOKDocView_Impl bool m_bInDragGraphicHandles[8]; ///@} - LOKDocView_Impl() - : m_pEventBox(gtk_event_box_new()), - m_pTable(0), - m_pCanvas(0), - m_fZoom(1), - m_pOffice(0), - m_pDocument(0), - m_bEdit(false), - m_aVisibleCursor({0, 0, 0, 0}), - m_bCursorOverlayVisible(false), - m_bCursorVisible(true), - m_nLastButtonPressTime(0), - m_nLastButtonReleaseTime(0), - m_pTextSelectionRectangles(0), - m_aTextSelectionStart({0, 0, 0, 0}), - m_aTextSelectionEnd({0, 0, 0, 0}), - m_aGraphicSelection({0, 0, 0, 0}), - m_bInDragGraphicSelection(false), - - // Start/middle/end handle. - m_pHandleStart(0), - m_aHandleStartRect({0, 0, 0, 0}), - m_bInDragStartHandle(false), - m_pHandleMiddle(0), - m_aHandleMiddleRect({0, 0, 0, 0}), - m_bInDragMiddleHandle(false), - m_pHandleEnd(0), - m_aHandleEndRect({0, 0, 0, 0}), - m_bInDragEndHandle(false), - - m_pGraphicHandle(0) - { - memset(&m_aGraphicHandleRects, 0, sizeof(m_aGraphicHandleRects)); - memset(&m_bInDragGraphicHandles, 0, sizeof(m_bInDragGraphicHandles)); - } + LOKDocView_Impl(); + ~LOKDocView_Impl(); + /// Connected to the destroy signal of LOKDocView, deletes its LOKDocView_Impl. + static void destroy(LOKDocView* pDocView, gpointer pData); }; -static void lok_docview_class_init( gpointer ); -static void lok_docview_init( GTypeInstance *, gpointer ); -static float pixelToTwip(float nInput); -static gboolean renderOverlay(GtkWidget* pWidget, GdkEventExpose* pEvent, gpointer pData); +LOKDocView_Impl::LOKDocView_Impl() + : m_pEventBox(gtk_event_box_new()), + m_pTable(0), + m_pCanvas(0), + m_fZoom(1), + m_pOffice(0), + m_pDocument(0), + m_bEdit(false), + m_aVisibleCursor({0, 0, 0, 0}), + m_bCursorOverlayVisible(false), + m_bCursorVisible(true), + m_nLastButtonPressTime(0), + m_nLastButtonReleaseTime(0), + m_pTextSelectionRectangles(0), + m_aTextSelectionStart({0, 0, 0, 0}), + m_aTextSelectionEnd({0, 0, 0, 0}), + m_aGraphicSelection({0, 0, 0, 0}), + m_bInDragGraphicSelection(false), + + // Start/middle/end handle. + m_pHandleStart(0), + m_aHandleStartRect({0, 0, 0, 0}), + m_bInDragStartHandle(false), + m_pHandleMiddle(0), + m_aHandleMiddleRect({0, 0, 0, 0}), + m_bInDragMiddleHandle(false), + m_pHandleEnd(0), + m_aHandleEndRect({0, 0, 0, 0}), + m_bInDragEndHandle(false), + + m_pGraphicHandle(0) +{ + memset(&m_aGraphicHandleRects, 0, sizeof(m_aGraphicHandleRects)); + memset(&m_bInDragGraphicHandles, 0, sizeof(m_bInDragGraphicHandles)); +} -// We specifically need to destroy the document when closing in order to ensure -// that lock files etc. are cleaned up. -void lcl_onDestroy(LOKDocView* pDocView, gpointer /*pData*/) +LOKDocView_Impl::~LOKDocView_Impl() { - if (pDocView->m_pImpl->m_pDocument) - pDocView->m_pImpl->m_pDocument->pClass->destroy(pDocView->m_pImpl->m_pDocument); - pDocView->m_pImpl->m_pDocument = 0; + if (m_pDocument) + m_pDocument->pClass->destroy(m_pDocument); + m_pDocument = 0; +} + +void LOKDocView_Impl::destroy(LOKDocView* pDocView, gpointer /*pData*/) +{ + // We specifically need to destroy the document when closing in order to ensure + // that lock files etc. are cleaned up. delete pDocView->m_pImpl; } +static void lok_docview_class_init( gpointer ); +static void lok_docview_init( GTypeInstance *, gpointer ); +static float pixelToTwip(float nInput); +static gboolean renderOverlay(GtkWidget* pWidget, GdkEventExpose* pEvent, gpointer pData); + /** * The user drags the handle, which is below the cursor, but wants to move the * cursor accordingly. @@ -458,8 +467,7 @@ static void lok_docview_init( GTypeInstance* pInstance, gpointer ) gtk_widget_show( pDocView->m_pImpl->m_pEventBox ); - gtk_signal_connect( GTK_OBJECT(pDocView), "destroy", - GTK_SIGNAL_FUNC(lcl_onDestroy), NULL ); + gtk_signal_connect(GTK_OBJECT(pDocView), "destroy", GTK_SIGNAL_FUNC(LOKDocView_Impl::destroy), 0); g_signal_connect_after(pDocView->m_pImpl->m_pEventBox, "expose-event", G_CALLBACK(renderOverlay), pDocView); } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
