Blob Blame History Raw
From 64db75597615c8f528e91203e7a50768a891aab0 Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@collabora.co.uk>
Date: Mon, 2 Nov 2015 14:59:07 +0100
Subject: [PATCH 257/398] gtktiledviewer: show zoom in the status bar

Change-Id: I4ab00a269b0a8435a278f93e1d92d102a80c8506
(cherry picked from commit 901fa421e1d446408116d1fe2eb6f070b5946dc9)
---
 .../qa/gtktiledviewer/gtktiledviewer.cxx           | 34 +++++++++++++++++-----
 1 file changed, 27 insertions(+), 7 deletions(-)

diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
index 4e9b9b80ea03..c6821065d147 100644
--- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
@@ -83,6 +83,9 @@ class TiledWindow
 public:
     GtkWidget* m_pDocView;
     GtkWidget* m_pStatusBar;
+    GtkWidget* m_pProgressBar;
+    GtkWidget* m_pStatusbarLabel;
+    GtkWidget* m_pZoomLabel;
     GtkToolItem* m_pEnableEditing;
     GtkToolItem* m_pBold;
     GtkToolItem* m_pItalic;
@@ -114,6 +117,9 @@ public:
     TiledWindow()
         : m_pDocView(0),
         m_pStatusBar(0),
+        m_pProgressBar(0),
+        m_pStatusbarLabel(0),
+        m_pZoomLabel(0),
         m_pEnableEditing(0),
         m_pBold(0),
         m_pItalic(0),
@@ -373,6 +379,8 @@ static void changeZoom( GtkWidget* pButton, gpointer /* pItem */ )
             lok_doc_view_set_zoom( LOK_DOC_VIEW(pDocView), fZoom );
         }
     }
+    std::string aZoom = std::to_string(int(fZoom * 100)) + std::string("%");
+    gtk_label_set_text(GTK_LABEL(rWindow.m_pZoomLabel), aZoom.c_str());
 }
 
 /// User clicked on the button -> inform LOKDocView.
@@ -425,8 +433,9 @@ static void createView(GtkWidget* pButton, gpointer /*pItem*/)
     GtkWidget* pDocView = lok_doc_view_new_from_widget(LOK_DOC_VIEW(rWindow.m_pDocView));
 
     TiledWindow& rNewWindow = setupWidgetAndCreateWindow(pDocView);
-    // Hide status bar that contains the unused progress bar.
-    gtk_widget_hide(rNewWindow.m_pStatusBar);
+    // Hide the unused progress bar.
+    gtk_widget_show_all(rNewWindow.m_pStatusBar);
+    gtk_widget_hide(rNewWindow.m_pProgressBar);
 }
 
 /// Creates a new model, i.e. LOK init and document load, one view implicitly.
@@ -845,7 +854,8 @@ static void openDocumentCallback (GObject* source_object, GAsyncResult* res, gpo
     focusChain = g_list_append( focusChain, pDocView );
     gtk_container_set_focus_chain ( GTK_CONTAINER (rWindow.m_pVBox), focusChain );
 
-    gtk_widget_hide(rWindow.m_pStatusBar);
+    gtk_widget_show_all(rWindow.m_pStatusBar);
+    gtk_widget_hide(rWindow.m_pProgressBar);
 }
 
 /// Creates the GtkWindow that has main widget as children and registers it in the window map.
@@ -1085,15 +1095,22 @@ static GtkWidget* createWindow(TiledWindow& rWindow)
 
     gtk_container_add(GTK_CONTAINER(rWindow.m_pScrolledWindow), rWindow.m_pDocView);
 
-    GtkWidget* pProgressBar = gtk_progress_bar_new ();
-    g_signal_connect(rWindow.m_pDocView, "load-changed", G_CALLBACK(loadChanged), pProgressBar);
+    rWindow.m_pProgressBar = gtk_progress_bar_new ();
+    g_signal_connect(rWindow.m_pDocView, "load-changed", G_CALLBACK(loadChanged), rWindow.m_pProgressBar);
 
     GtkWidget* pStatusBar = gtk_statusbar_new();
     rWindow.m_pStatusBar = pStatusBar;
     gtk_container_forall(GTK_CONTAINER(pStatusBar), removeChildrenFromStatusbar, pStatusBar);
     gtk_container_add (GTK_CONTAINER(rWindow.m_pVBox), pStatusBar);
-    gtk_container_add (GTK_CONTAINER(pStatusBar), pProgressBar);
-    gtk_widget_set_hexpand(pProgressBar, true);
+    gtk_container_add (GTK_CONTAINER(pStatusBar), rWindow.m_pProgressBar);
+    gtk_widget_set_hexpand(rWindow.m_pProgressBar, true);
+
+    rWindow.m_pStatusbarLabel = gtk_label_new("");
+    gtk_widget_set_hexpand(rWindow.m_pStatusbarLabel, TRUE);
+    gtk_container_add(GTK_CONTAINER(pStatusBar), rWindow.m_pStatusbarLabel);
+
+    rWindow.m_pZoomLabel = gtk_label_new("100%");
+    gtk_container_add(GTK_CONTAINER(pStatusBar), rWindow.m_pZoomLabel);
 
     gtk_widget_show_all(pWindow);
     // Hide the findbar by default.
@@ -1102,6 +1119,9 @@ static GtkWidget* createWindow(TiledWindow& rWindow)
     gtk_widget_hide(rWindow.m_pCornerButton->m_pDrawingArea);
     gtk_widget_hide(rWindow.m_pRowBar->m_pDrawingArea);
     gtk_widget_hide(rWindow.m_pColumnBar->m_pDrawingArea);
+    // Hide the non-progressbar children of the status bar by default.
+    gtk_widget_hide(rWindow.m_pStatusbarLabel);
+    gtk_widget_hide(rWindow.m_pZoomLabel);
 
     g_aWindows[pWindow] = rWindow;
     g_signal_connect(rWindow.m_pDocView, "configure-event", G_CALLBACK(TiledRowColumnBar::docConfigureEvent), 0);
-- 
2.12.0