summaryrefslogtreecommitdiff
path: root/libreofficekit
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2015-05-21 13:17:18 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-05-28 09:42:13 +0200
commit8dbeb6368cdcb1605e6750771f96b5865e0c5e93 (patch)
treed8cfe4db0e0b97dc11bc99cc4b303903e66b6520 /libreofficekit
parent1c2f1892992a7193518f74fbbed78b456ae4a8b2 (diff)
gtktiledviewer: handle LOK_CALLBACK_SEARCH_NOT_FOUND
Change-Id: Ic545bbd14d11a3b310f4d72ee02e51a7cb6f4f22 (cherry picked from commit cb0b7ff34dc193c37e89f4a968e1cb7502338230)
Diffstat (limited to 'libreofficekit')
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx14
-rw-r--r--libreofficekit/source/gtk/lokdocview.cxx21
2 files changed, 35 insertions, 0 deletions
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
index aa1f3f60eb6e..edd5006ccd48 100644
--- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
@@ -48,6 +48,7 @@ static GtkComboBoxText* pPartSelector;
#endif
GtkWidget* pFindbar;
GtkWidget* pFindbarEntry;
+GtkWidget* pFindbarLabel;
static LibreOfficeKit* pOffice;
@@ -177,6 +178,7 @@ static void signalSearchPrev(GtkWidget* /*pButton*/, gpointer /*pItem*/)
/// Handles the key-press-event of the search entry widget.
static gboolean signalFindbar(GtkWidget* /*pWidget*/, GdkEventKey* pEvent, gpointer /*pData*/)
{
+ gtk_label_set_text(GTK_LABEL(pFindbarLabel), "");
switch(pEvent->keyval)
{
case GDK_Return:
@@ -230,6 +232,12 @@ static void signalCommand(LOKDocView* /*pLOKDocView*/, char* pPayload, gpointer
}
}
+/// LOKDocView found no search matches -> set the search label accordingly.
+static void signalSearch(LOKDocView* /*pLOKDocView*/, char* /*pPayload*/, gpointer /*pData*/)
+{
+ gtk_label_set_text(GTK_LABEL(pFindbarLabel), "Search key not found");
+}
+
/// User clicked on a cmmand button -> inform LOKDocView.
static void toggleToolItem(GtkWidget* pWidget, gpointer /*pData*/)
{
@@ -423,12 +431,18 @@ int main( int argc, char* argv[] )
gtk_toolbar_insert(GTK_TOOLBAR(pFindbar), pFindbarPrev, -1);
g_signal_connect(G_OBJECT(pFindbarPrev), "clicked", G_CALLBACK(signalSearchPrev), NULL);
+ GtkToolItem* pFindbarLabelContainer = gtk_tool_item_new();
+ pFindbarLabel = gtk_label_new("");
+ gtk_container_add(GTK_CONTAINER(pFindbarLabelContainer), pFindbarLabel);
+ gtk_toolbar_insert(GTK_TOOLBAR(pFindbar), pFindbarLabelContainer, -1);
+
gtk_box_pack_end(GTK_BOX(pVBox), pFindbar, FALSE, FALSE, 0);
// Docview
pDocView = lok_docview_new( pOffice );
g_signal_connect(pDocView, "edit-changed", G_CALLBACK(signalEdit), NULL);
g_signal_connect(pDocView, "command-changed", G_CALLBACK(signalCommand), NULL);
+ g_signal_connect(pDocView, "search-not-found", G_CALLBACK(signalSearch), NULL);
// Input handling.
g_signal_connect(pWindow, "key-press-event", G_CALLBACK(signalKey), pDocView);
diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx
index 7b2d4c948b2a..874f96a1f6ba 100644
--- a/libreofficekit/source/gtk/lokdocview.cxx
+++ b/libreofficekit/source/gtk/lokdocview.cxx
@@ -192,6 +192,8 @@ struct LOKDocView_Impl
void globalCallbackWorkerImpl(int nType, const char* pPayload);
/// Command state (various buttons like bold are toggled or not) is changed.
void commandChanged(const std::string& rPayload);
+ /// Search did not find any matches.
+ void searchNotFound(const std::string& rPayload);
};
namespace {
@@ -1006,6 +1008,9 @@ gboolean LOKDocView_Impl::callbackImpl(CallbackData* pCallback)
}
break;
case LOK_CALLBACK_SEARCH_NOT_FOUND:
+ {
+ searchNotFound(pCallback->m_aPayload);
+ }
break;
case LOK_CALLBACK_PAGE_COUNT_CHANGED:
{
@@ -1060,6 +1065,7 @@ enum
{
EDIT_CHANGED,
COMMAND_CHANGED,
+ SEARCH_NOT_FOUND,
LAST_SIGNAL
};
@@ -1070,6 +1076,11 @@ void LOKDocView_Impl::commandChanged(const std::string& rString)
g_signal_emit(m_pDocView, docview_signals[COMMAND_CHANGED], 0, rString.c_str());
}
+void LOKDocView_Impl::searchNotFound(const std::string& rString)
+{
+ g_signal_emit(m_pDocView, docview_signals[SEARCH_NOT_FOUND], 0, rString.c_str());
+}
+
static void lok_docview_class_init( gpointer ptr )
{
LOKDocViewClass* pClass = static_cast<LOKDocViewClass *>(ptr);
@@ -1094,6 +1105,16 @@ static void lok_docview_class_init( gpointer ptr )
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE, 1,
G_TYPE_STRING);
+ pClass->search_not_found = 0;
+ docview_signals[SEARCH_NOT_FOUND] =
+ g_signal_new("search-not-found",
+ G_TYPE_FROM_CLASS(gobject_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(LOKDocViewClass, search_not_found),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1,
+ G_TYPE_STRING);
}
static void lok_docview_init( GTypeInstance* pInstance, gpointer )