diff options
author | Pranav Kant <pranavk@gnome.org> | 2015-06-09 16:27:37 +0530 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-06-12 15:20:52 +0200 |
commit | 8d0b34c3a6292ce9c5a081ef95890ae0c5e07ac7 (patch) | |
tree | 52b12991c668a61e74c8cc99739ec0a37d9b764b /libreofficekit/qa/gtktiledviewer | |
parent | 12b73697ed5787a621910623d76a6e241b04bd1a (diff) |
lokdocview: Change parent class to GtkDrawingArea
It is not the job of the widget to provide the scroll bars.
Change-Id: Iafc5724ed5b21717d711bb8f7e1a076dd1288b76
Diffstat (limited to 'libreofficekit/qa/gtktiledviewer')
-rw-r--r-- | libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx index 38b29ee40a3b..c8b47f7c7142 100644 --- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx @@ -38,6 +38,7 @@ static GtkToolItem* pBold; static GtkToolItem* pItalic; static GtkToolItem* pUnderline; static GtkToolItem* pStrikethrough; +static GtkWidget* pScrolledWindow; std::map<GtkToolItem*, std::string> g_aToolItemCommandNames; std::map<std::string, GtkToolItem*> g_aCommandNameToolItems; bool g_bToolItemBroadcast = true; @@ -134,6 +135,23 @@ static void toggleFindbar(GtkWidget* /*pButton*/, gpointer /*pItem*/) #endif } +/// Get the visible area of the scrolled window +static void getVisibleAreaTwips(GdkRectangle* pArea) +{ + GtkAdjustment* pHAdjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(pScrolledWindow)); + GtkAdjustment* pVAdjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(pScrolledWindow)); + + pArea->x = lok_doc_view_pixel_to_twip(LOK_DOC_VIEW(pDocView), + gtk_adjustment_get_value(pHAdjustment)); + pArea->y = lok_doc_view_pixel_to_twip(LOK_DOC_VIEW(pDocView), + gtk_adjustment_get_value(pVAdjustment)); + pArea->width = lok_doc_view_pixel_to_twip(LOK_DOC_VIEW(pDocView), + gtk_adjustment_get_page_size(pHAdjustment)); + pArea->height = lok_doc_view_pixel_to_twip(LOK_DOC_VIEW(pDocView), + gtk_adjustment_get_page_size(pVAdjustment)); +} + + /// Handles the key-press-event of the window. static gboolean signalKey(GtkWidget* pWidget, GdkEventKey* pEvent, gpointer pData) { @@ -161,7 +179,7 @@ static void doSearch(bool bBackwards) LOKDocView* pLOKDocView = LOK_DOC_VIEW(pDocView); GdkRectangle aArea; - lok_doc_view_get_visarea(pLOKDocView, &aArea); + getVisibleAreaTwips(&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"); @@ -461,7 +479,12 @@ int main( int argc, char* argv[] ) g_signal_connect(pWindow, "key-press-event", G_CALLBACK(signalKey), pDocView); g_signal_connect(pWindow, "key-release-event", G_CALLBACK(signalKey), pDocView); - gtk_container_add( GTK_CONTAINER(pVBox), pDocView ); + // Scrolled window for DocView + pScrolledWindow = gtk_scrolled_window_new(0, 0); + gtk_container_add(GTK_CONTAINER(pVBox), pScrolledWindow); + + // DocView doesn't have scrolling capability, so need a viewport + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(pScrolledWindow), pDocView); gtk_widget_show_all( pWindow ); // Hide the findbar by default. |