diff options
author | Pranav Kant <pranavk@libreoffice.org> | 2015-12-09 10:33:05 +0530 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2015-12-09 09:30:35 +0000 |
commit | 0f64cf72ff3b930e306e937bb18f4cbe55a8026a (patch) | |
tree | d7cf14b2d23051964d1af861920c97eb6339425a /libreofficekit/qa | |
parent | b3bfc26d0863b074bb990725718f2ab23d05425d (diff) |
tdf#96318: Add searching API
Clients should now use these APIs to search for text in the
widget, rather than executing UNO commands directly on the
widget. This allows searching for text in the widget in view-only
mode too.
Change-Id: I013b6f96e69a634ec33367394d39c0f645a4994d
Reviewed-on: https://gerrit.libreoffice.org/20488
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: David Tardon <dtardon@redhat.com>
Diffstat (limited to 'libreofficekit/qa')
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx | 46 |
1 files changed, 13 insertions, 33 deletions
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx index e7b221651237..8d43737a4b7d 100644 --- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx @@ -452,7 +452,11 @@ static void toggleEditing(GtkWidget* pButton, gpointer /*pItem*/) static void toggleFindAll(GtkWidget* pButton, gpointer /*pItem*/) { TiledWindow& rWindow = lcl_getTiledWindow(pButton); + GtkEntry* pEntry = GTK_ENTRY(rWindow.m_pFindbarEntry); + const char* pText = gtk_entry_get_text(pEntry); + rWindow.m_bFindAll = !rWindow.m_bFindAll; + lok_doc_view_highlight_all(LOK_DOC_VIEW(rWindow.m_pDocView), pText); } /// Toggle the visibility of the findbar. @@ -611,48 +615,24 @@ static void doPaste(GtkWidget* pButton, gpointer /*pItem*/) pDocument->pClass->paste(pDocument, "text/plain;charset=utf-8", pText, strlen(pText)); } -/// Searches for the next or previous text of TiledWindow::m_pFindbarEntry. -static void doSearch(GtkWidget* pButton, bool bBackwards) +/// Click handler for the search next button. +static void signalSearchNext(GtkWidget* pButton, gpointer /*pItem*/) { TiledWindow& rWindow = lcl_getTiledWindow(pButton); GtkEntry* pEntry = GTK_ENTRY(rWindow.m_pFindbarEntry); const char* pText = gtk_entry_get_text(pEntry); - boost::property_tree::ptree aTree; - aTree.put(boost::property_tree::ptree::path_type("SearchItem.SearchString/type", '/'), "string"); - 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; - getVisibleAreaTwips(rWindow.m_pDocView, &aArea); - aTree.put(boost::property_tree::ptree::path_type("SearchItem.SearchStartPointX/type", '/'), "long"); - aTree.put(boost::property_tree::ptree::path_type("SearchItem.SearchStartPointX/value", '/'), aArea.x); - aTree.put(boost::property_tree::ptree::path_type("SearchItem.SearchStartPointY/type", '/'), "long"); - aTree.put(boost::property_tree::ptree::path_type("SearchItem.SearchStartPointY/value", '/'), aArea.y); - - std::stringstream aStream; - boost::property_tree::write_json(aStream, aTree); - lok_doc_view_post_command(pLOKDocView, ".uno:ExecuteSearch", aStream.str().c_str(), false); -} - -/// Click handler for the search next button. -static void signalSearchNext(GtkWidget* pButton, gpointer /*pItem*/) -{ - doSearch(pButton, /*bBackwards=*/false); + lok_doc_view_find_next(LOK_DOC_VIEW(rWindow.m_pDocView), pText, rWindow.m_bFindAll); } /// Click handler for the search previous button. static void signalSearchPrev(GtkWidget* pButton, gpointer /*pItem*/) { - doSearch(pButton, /*bBackwards=*/true); + TiledWindow& rWindow = lcl_getTiledWindow(pButton); + GtkEntry* pEntry = GTK_ENTRY(rWindow.m_pFindbarEntry); + const char* pText = gtk_entry_get_text(pEntry); + + lok_doc_view_find_prev(LOK_DOC_VIEW(rWindow.m_pDocView), pText, rWindow.m_bFindAll); } /// Handles the key-press-event of the search entry widget. @@ -665,7 +645,7 @@ static gboolean signalFindbar(GtkWidget* pWidget, GdkEventKey* pEvent, gpointer case GDK_KEY_Return: { // Search forward. - doSearch(pWidget, /*bBackwards=*/false); + signalSearchNext(pWidget, nullptr); return TRUE; } case GDK_KEY_Escape: |