include/LibreOfficeKit/LibreOfficeKitGtk.h | 5 +++++ libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx | 14 +++++++++++++- libreofficekit/source/gtk/lokdocview.c | 14 +++++++++++++- 3 files changed, 31 insertions(+), 2 deletions(-)
New commits: commit 66e6ca74cfe461bb2599f2e218b7e2313f16da65 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Tue Jan 13 16:47:23 2015 +0100 gtktiledviewer: start in viewer mode, switch to edit mode by mouse click Change-Id: I0863ec8fb159a2e367951ba9e7d7310d250d8a1e diff --git a/include/LibreOfficeKit/LibreOfficeKitGtk.h b/include/LibreOfficeKit/LibreOfficeKitGtk.h index 111381d..3fd0c4a 100644 --- a/include/LibreOfficeKit/LibreOfficeKitGtk.h +++ b/include/LibreOfficeKit/LibreOfficeKitGtk.h @@ -41,6 +41,8 @@ struct _LOKDocView LibreOfficeKit* pOffice; LibreOfficeKitDocument* pDocument; + /// View or edit mode. + gboolean m_bEdit; }; struct _LOKDocViewClass @@ -64,6 +66,9 @@ char* lok_docview_get_part_name (LOKDocView* pDocView, int nPart); void lok_docview_set_partmode (LOKDocView* pDocView, LibreOfficeKitPartMode ePartMode); +/// Sets if the viewer is actually an editor or not. +void lok_docview_set_edit (LOKDocView* pDocView, + gboolean bEdit); #ifdef __cplusplus } #endif diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx index e1e9e4f..2be201f 100644 --- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx @@ -131,8 +131,11 @@ void changeQuadView( GtkWidget* /*pButton*/, gpointer /* pItem */ ) static void signalKey(GtkWidget* /*pWidget*/, GdkEventKey* pEvent, gpointer /*pData*/) { LOKDocView* pLOKDocView = LOK_DOCVIEW(pDocView); - int nCode = 0; + + if (!pLOKDocView->m_bEdit) + return; + switch (pEvent->keyval) { case GDK_BackSpace: @@ -154,6 +157,14 @@ static void signalKey(GtkWidget* /*pWidget*/, GdkEventKey* pEvent, gpointer /*pD pLOKDocView->pOffice->pClass->postKeyEvent(pLOKDocView->pOffice, LOK_KEYEVENT_KEYINPUT, nCode); } +/// Receives a button press event. +static void signalButton(GtkWidget* /*pWidget*/, GdkEvent* /*pEvent*/, gpointer /*pData*/) +{ + LOKDocView* pLOKDocView = LOK_DOCVIEW(pDocView); + + lok_docview_set_edit(pLOKDocView, TRUE); +} + // GtkComboBox requires gtk 2.24 or later #if ( GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION >= 24 ) || GTK_MAJOR_VERSION > 2 void populatePartSelector() @@ -311,6 +322,7 @@ int main( int argc, char* argv[] ) // Input handling. g_signal_connect(pWindow, "key-press-event", G_CALLBACK(signalKey), NULL); g_signal_connect(pWindow, "key-release-event", G_CALLBACK(signalKey), NULL); + g_signal_connect(pDocView, "button-press-event", G_CALLBACK(signalButton), NULL); gtk_container_add( GTK_CONTAINER(pVBox), pDocView ); diff --git a/libreofficekit/source/gtk/lokdocview.c b/libreofficekit/source/gtk/lokdocview.c index 2e4226c..d373235 100644 --- a/libreofficekit/source/gtk/lokdocview.c +++ b/libreofficekit/source/gtk/lokdocview.c @@ -71,6 +71,9 @@ static void lok_docview_init( LOKDocView* pDocView ) gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(pDocView), pDocView->pEventBox ); + // Allow reacting to button press events. + gtk_widget_set_events(pDocView->pEventBox, GDK_BUTTON_PRESS_MASK); + pDocView->pCanvas = gtk_image_new(); gtk_container_add( GTK_CONTAINER( pDocView->pEventBox ), pDocView->pCanvas ); @@ -84,6 +87,7 @@ static void lok_docview_init( LOKDocView* pDocView ) pDocView->pDocument = 0; pDocView->fZoom = 1; + pDocView->m_bEdit = FALSE; gtk_signal_connect( GTK_OBJECT(pDocView), "destroy", GTK_SIGNAL_FUNC(lcl_onDestroy), NULL ); @@ -212,7 +216,6 @@ SAL_DLLPUBLIC_EXPORT gboolean lok_docview_open_document( LOKDocView* pDocView, c { pDocView->pDocument->pClass->initializeForRendering(pDocView->pDocument); renderDocument( pDocView ); - pDocView->pDocument->pClass->registerCallback(pDocView->pDocument, &lok_docview_callback_worker, pDocView); } return TRUE; @@ -261,4 +264,13 @@ SAL_DLLPUBLIC_EXPORT void lok_docview_set_partmode( LOKDocView* pDocView, pDocView->pDocument->pClass->setPartMode( pDocView->pDocument, ePartMode ); renderDocument( pDocView ); } + +SAL_DLLPUBLIC_EXPORT void lok_docview_set_edit( LOKDocView* pDocView, + gboolean bEdit ) +{ + if (!pDocView->m_bEdit && bEdit) + pDocView->pDocument->pClass->registerCallback(pDocView->pDocument, &lok_docview_callback_worker, pDocView); + pDocView->m_bEdit = bEdit; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits