Kaydet (Commit) fe3ab848 authored tarafından Miklos Vajna's avatar Miklos Vajna

gtktiledviewer: start in viewer mode, switch to edit mode by mouse click

Change-Id: I0863ec8fb159a2e367951ba9e7d7310d250d8a1e
üst f1a2759c
...@@ -41,6 +41,8 @@ struct _LOKDocView ...@@ -41,6 +41,8 @@ struct _LOKDocView
LibreOfficeKit* pOffice; LibreOfficeKit* pOffice;
LibreOfficeKitDocument* pDocument; LibreOfficeKitDocument* pDocument;
/// View or edit mode.
gboolean m_bEdit;
}; };
struct _LOKDocViewClass struct _LOKDocViewClass
...@@ -64,6 +66,9 @@ char* lok_docview_get_part_name (LOKDocView* pDocView, ...@@ -64,6 +66,9 @@ char* lok_docview_get_part_name (LOKDocView* pDocView,
int nPart); int nPart);
void lok_docview_set_partmode (LOKDocView* pDocView, void lok_docview_set_partmode (LOKDocView* pDocView,
LibreOfficeKitPartMode ePartMode); LibreOfficeKitPartMode ePartMode);
/// Sets if the viewer is actually an editor or not.
void lok_docview_set_edit (LOKDocView* pDocView,
gboolean bEdit);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
......
...@@ -131,8 +131,11 @@ void changeQuadView( GtkWidget* /*pButton*/, gpointer /* pItem */ ) ...@@ -131,8 +131,11 @@ void changeQuadView( GtkWidget* /*pButton*/, gpointer /* pItem */ )
static void signalKey(GtkWidget* /*pWidget*/, GdkEventKey* pEvent, gpointer /*pData*/) static void signalKey(GtkWidget* /*pWidget*/, GdkEventKey* pEvent, gpointer /*pData*/)
{ {
LOKDocView* pLOKDocView = LOK_DOCVIEW(pDocView); LOKDocView* pLOKDocView = LOK_DOCVIEW(pDocView);
int nCode = 0; int nCode = 0;
if (!pLOKDocView->m_bEdit)
return;
switch (pEvent->keyval) switch (pEvent->keyval)
{ {
case GDK_BackSpace: case GDK_BackSpace:
...@@ -154,6 +157,14 @@ static void signalKey(GtkWidget* /*pWidget*/, GdkEventKey* pEvent, gpointer /*pD ...@@ -154,6 +157,14 @@ static void signalKey(GtkWidget* /*pWidget*/, GdkEventKey* pEvent, gpointer /*pD
pLOKDocView->pOffice->pClass->postKeyEvent(pLOKDocView->pOffice, LOK_KEYEVENT_KEYINPUT, nCode); 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 // GtkComboBox requires gtk 2.24 or later
#if ( GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION >= 24 ) || GTK_MAJOR_VERSION > 2 #if ( GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION >= 24 ) || GTK_MAJOR_VERSION > 2
void populatePartSelector() void populatePartSelector()
...@@ -311,6 +322,7 @@ int main( int argc, char* argv[] ) ...@@ -311,6 +322,7 @@ int main( int argc, char* argv[] )
// Input handling. // Input handling.
g_signal_connect(pWindow, "key-press-event", G_CALLBACK(signalKey), NULL); 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(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 ); gtk_container_add( GTK_CONTAINER(pVBox), pDocView );
......
...@@ -71,6 +71,9 @@ static void lok_docview_init( LOKDocView* pDocView ) ...@@ -71,6 +71,9 @@ static void lok_docview_init( LOKDocView* pDocView )
gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(pDocView), gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(pDocView),
pDocView->pEventBox ); pDocView->pEventBox );
// Allow reacting to button press events.
gtk_widget_set_events(pDocView->pEventBox, GDK_BUTTON_PRESS_MASK);
pDocView->pCanvas = gtk_image_new(); pDocView->pCanvas = gtk_image_new();
gtk_container_add( GTK_CONTAINER( pDocView->pEventBox ), pDocView->pCanvas ); gtk_container_add( GTK_CONTAINER( pDocView->pEventBox ), pDocView->pCanvas );
...@@ -84,6 +87,7 @@ static void lok_docview_init( LOKDocView* pDocView ) ...@@ -84,6 +87,7 @@ static void lok_docview_init( LOKDocView* pDocView )
pDocView->pDocument = 0; pDocView->pDocument = 0;
pDocView->fZoom = 1; pDocView->fZoom = 1;
pDocView->m_bEdit = FALSE;
gtk_signal_connect( GTK_OBJECT(pDocView), "destroy", gtk_signal_connect( GTK_OBJECT(pDocView), "destroy",
GTK_SIGNAL_FUNC(lcl_onDestroy), NULL ); GTK_SIGNAL_FUNC(lcl_onDestroy), NULL );
...@@ -212,7 +216,6 @@ SAL_DLLPUBLIC_EXPORT gboolean lok_docview_open_document( LOKDocView* pDocView, c ...@@ -212,7 +216,6 @@ SAL_DLLPUBLIC_EXPORT gboolean lok_docview_open_document( LOKDocView* pDocView, c
{ {
pDocView->pDocument->pClass->initializeForRendering(pDocView->pDocument); pDocView->pDocument->pClass->initializeForRendering(pDocView->pDocument);
renderDocument( pDocView ); renderDocument( pDocView );
pDocView->pDocument->pClass->registerCallback(pDocView->pDocument, &lok_docview_callback_worker, pDocView);
} }
return TRUE; return TRUE;
...@@ -261,4 +264,13 @@ SAL_DLLPUBLIC_EXPORT void lok_docview_set_partmode( LOKDocView* pDocView, ...@@ -261,4 +264,13 @@ SAL_DLLPUBLIC_EXPORT void lok_docview_set_partmode( LOKDocView* pDocView,
pDocView->pDocument->pClass->setPartMode( pDocView->pDocument, ePartMode ); pDocView->pDocument->pClass->setPartMode( pDocView->pDocument, ePartMode );
renderDocument( pDocView ); 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: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment