summaryrefslogtreecommitdiff
path: root/libreofficekit/source/gtk
diff options
context:
space:
mode:
Diffstat (limited to 'libreofficekit/source/gtk')
-rw-r--r--libreofficekit/source/gtk/lokdocview.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/libreofficekit/source/gtk/lokdocview.c b/libreofficekit/source/gtk/lokdocview.c
index e12266b5c29b..3980a50edd8c 100644
--- a/libreofficekit/source/gtk/lokdocview.c
+++ b/libreofficekit/source/gtk/lokdocview.c
@@ -232,7 +232,8 @@ gboolean lcl_signalButton(GtkWidget* pEventBox, GdkEventButton* pEvent, LOKDocVi
}
}
- lok_docview_set_edit(pDocView, TRUE);
+ if (!pDocView->m_bEdit)
+ lok_docview_set_edit(pDocView, TRUE);
switch (pEvent->type)
{
@@ -289,9 +290,27 @@ SAL_DLLPUBLIC_EXPORT guint lok_docview_get_type()
return lok_docview_type;
}
+enum
+{
+ EDIT_CHANGED,
+ LAST_SIGNAL
+};
+
+static guint docview_signals[LAST_SIGNAL] = { 0 };
+
static void lok_docview_class_init( LOKDocViewClass* pClass )
{
- (void)pClass;
+ GObjectClass *gobject_class = G_OBJECT_CLASS(pClass);
+ pClass->edit_changed = NULL;
+ docview_signals[EDIT_CHANGED] =
+ g_signal_new("edit-changed",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (LOKDocViewClass, edit_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__BOOLEAN,
+ G_TYPE_NONE, 1,
+ G_TYPE_BOOLEAN);
}
static void lok_docview_init( LOKDocView* pDocView )
@@ -950,9 +969,12 @@ SAL_DLLPUBLIC_EXPORT void lok_docview_set_partmode( LOKDocView* pDocView,
SAL_DLLPUBLIC_EXPORT void lok_docview_set_edit( LOKDocView* pDocView,
gboolean bEdit )
{
+ gboolean bWasEdit = pDocView->m_bEdit;
+
if (!pDocView->m_bEdit && bEdit)
g_info("lok_docview_set_edit: entering edit mode");
pDocView->m_bEdit = bEdit;
+ g_signal_emit(pDocView, docview_signals[EDIT_CHANGED], 0, bWasEdit);
gtk_widget_queue_draw(GTK_WIDGET(pDocView->pEventBox));
}