summaryrefslogtreecommitdiff
path: root/libreofficekit
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2015-01-13 16:47:23 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-01-16 13:18:28 +0100
commitfe3ab8481eaf50272f1aa3892ff5f74ffd47d461 (patch)
treeebca9824f0e7ca2f8204cc8696b4751f407834ab /libreofficekit
parentf1a2759c29955040ac92c96bfa4e5621a78de8bb (diff)
gtktiledviewer: start in viewer mode, switch to edit mode by mouse click
Change-Id: I0863ec8fb159a2e367951ba9e7d7310d250d8a1e
Diffstat (limited to 'libreofficekit')
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx14
-rw-r--r--libreofficekit/source/gtk/lokdocview.c14
2 files changed, 26 insertions, 2 deletions
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
index e1e9e4f241b7..2be201fa62a0 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 2e4226c4155a..d373235a13b4 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: */