Blob Blame History Raw
From 34aa1adc51adf0da82774b0da1194870a0d90241 Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@collabora.co.uk>
Date: Mon, 5 Oct 2015 11:39:11 +0200
Subject: [PATCH 174/398] gtktiledviewer: make it possible to trigger
 SearchItem.Command

Change-Id: I210da07802bae1f2f2948976bc0faf90e93152b4
(cherry picked from commit aa3f607f80a2269ca2e1f8a5805d2e0b4cd36d7e)
---
 .../qa/gtktiledviewer/gtktiledviewer.cxx           | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
index 852bee584dfb..ed97a6743b38 100644
--- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
@@ -53,6 +53,7 @@ public:
     GtkWidget* m_pFindbar;
     GtkWidget* m_pFindbarEntry;
     GtkWidget* m_pFindbarLabel;
+    bool m_bFindAll;
 
     TiledWindow()
         : m_pDocView(0),
@@ -70,7 +71,8 @@ public:
         m_bPartSelectorBroadcast(true),
         m_pFindbar(0),
         m_pFindbarEntry(0),
-        m_pFindbarLabel(0)
+        m_pFindbarLabel(0),
+        m_bFindAll(false)
     {
     }
 };
@@ -178,6 +180,13 @@ static void toggleEditing(GtkWidget* pButton, gpointer /*pItem*/)
         lok_doc_view_set_edit(pLOKDocView, bActive);
 }
 
+/// Toggles if search should find all results or only the first one.
+static void toggleFindAll(GtkWidget* pButton, gpointer /*pItem*/)
+{
+    TiledWindow& rWindow = lcl_getTiledWindow(pButton);
+    rWindow.m_bFindAll = !rWindow.m_bFindAll;
+}
+
 /// Toggle the visibility of the findbar.
 static void toggleFindbar(GtkWidget* pButton, gpointer /*pItem*/)
 {
@@ -284,6 +293,12 @@ static void doSearch(GtkWidget* pButton, bool bBackwards)
     aTree.put(boost::property_tree::ptree::path_type("SearchItem.SearchString/value", '/'), pText);
     aTree.put(boost::property_tree::ptree::path_type("SearchItem.Backward/type", '/'), "boolean");
     aTree.put(boost::property_tree::ptree::path_type("SearchItem.Backward/value", '/'), bBackwards);
+    if (rWindow.m_bFindAll)
+    {
+        aTree.put(boost::property_tree::ptree::path_type("SearchItem.Command/type", '/'), "unsigned short");
+        // SvxSearchCmd::FIND_ALL
+        aTree.put(boost::property_tree::ptree::path_type("SearchItem.Command/value", '/'), "1");
+    }
 
     LOKDocView* pLOKDocView = LOK_DOC_VIEW(rWindow.m_pDocView);
     GdkRectangle aArea;
@@ -729,6 +744,11 @@ static GtkWidget* createWindow(TiledWindow& rWindow)
     gtk_toolbar_insert(GTK_TOOLBAR(rWindow.m_pFindbar), pFindbarPrev, -1);
     g_signal_connect(G_OBJECT(pFindbarPrev), "clicked", G_CALLBACK(signalSearchPrev), NULL);
 
+    GtkToolItem* pFindAll = gtk_toggle_tool_button_new();
+    gtk_tool_button_set_label(GTK_TOOL_BUTTON(pFindAll), "Highlight All");
+    gtk_toolbar_insert(GTK_TOOLBAR(rWindow.m_pFindbar), pFindAll, -1);
+    g_signal_connect(G_OBJECT(pFindAll), "toggled", G_CALLBACK(toggleFindAll), NULL);
+
     GtkToolItem* pFindbarLabelContainer = gtk_tool_item_new();
     rWindow.m_pFindbarLabel = gtk_label_new("");
     gtk_container_add(GTK_CONTAINER(pFindbarLabelContainer), rWindow.m_pFindbarLabel);
-- 
2.12.0