libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx |   38 +++++++++++++++-----
 sc/source/ui/view/tabview.cxx                       |   11 ++---
 2 files changed, 33 insertions(+), 16 deletions(-)

New commits:
commit 861b28b88909ec39fc83fccc0ab23d288128aa0e
Author: Miklos Vajna <vmik...@collabora.co.uk>
Date:   Mon Nov 2 15:18:09 2015 +0100

    sc lok: fix rounding errors with non-100% zoom
    
    There were two problems here:
    
    1) ScTabView::getRowColumnHeaders() did not expose twip values directly,
    but used ScRow/ColBar::GetEntrySize(), which does a twip -> pixel
    conversion, and then converted it back to twip. Avoid this unnecessary
    roundtrip.
    
    2) ScViewData::ToPixel() trunaces the resulting float to an integer, so
    if the result is e.g. 67.7 pixels, then Calc handled that as 67, but
    gtktiledviewer rounded that up to 68, resulting in non-matching headers
    for the rendered tiles.
    
    Change-Id: Ie6ed1ea923a423d1526eeb235b7b87106fd2f20b

diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx 
b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
index c8395a3..3d6577d 100644
--- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
@@ -256,7 +256,7 @@ gboolean TiledRowColumnBar::docConfigureEvent(GtkWidget* 
pDocView, GdkEventConfi
         rWindow.m_pRowBar->m_aHeaders.clear();
         for (boost::property_tree::ptree::value_type& rValue : 
aTree.get_child("rows"))
         {
-            int nSize = 
std::round(lok_doc_view_twip_to_pixel(LOK_DOC_VIEW(pDocView), 
std::atof(rValue.second.get<std::string>("size").c_str())));
+            int nSize = lok_doc_view_twip_to_pixel(LOK_DOC_VIEW(pDocView), 
std::atof(rValue.second.get<std::string>("size").c_str()));
             Header aHeader(nSize, rValue.second.get<std::string>("text"));
             rWindow.m_pRowBar->m_aHeaders.push_back(aHeader);
         }
@@ -266,7 +266,7 @@ gboolean TiledRowColumnBar::docConfigureEvent(GtkWidget* 
pDocView, GdkEventConfi
         rWindow.m_pColumnBar->m_aHeaders.clear();
         for (boost::property_tree::ptree::value_type& rValue : 
aTree.get_child("columns"))
         {
-            int nSize = 
std::round(lok_doc_view_twip_to_pixel(LOK_DOC_VIEW(pDocView), 
std::atof(rValue.second.get<std::string>("size").c_str())));
+            int nSize = lok_doc_view_twip_to_pixel(LOK_DOC_VIEW(pDocView), 
std::atof(rValue.second.get<std::string>("size").c_str()));
             Header aHeader(nSize, rValue.second.get<std::string>("text"));
             rWindow.m_pColumnBar->m_aHeaders.push_back(aHeader);
         }
diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
index 744ccb0..d11133b 100644
--- a/sc/source/ui/view/tabview.cxx
+++ b/sc/source/ui/view/tabview.cxx
@@ -2289,15 +2289,12 @@ OUString ScTabView::getRowColumnHeaders()
     SCROW nEndRow = 0;
     pDoc->GetTiledRenderingArea(aViewData.GetTabNo(), nEndCol, nEndRow);
 
-    double nPPTX = aViewData.GetPPTX();
-    double nPPTY = aViewData.GetPPTY();
-
     boost::property_tree::ptree aRows;
     for (SCROW nRow = 0; nRow <= nEndRow; ++nRow)
     {
         boost::property_tree::ptree aRow;
-        sal_uInt16 nSize = pRowBar[SC_SPLIT_BOTTOM]->GetEntrySize(nRow);
-        aRow.put("size", OString::number(nSize / nPPTY).getStr());
+        sal_uInt16 nSize = pDoc->GetOriginalHeight(nRow, aViewData.GetTabNo());
+        aRow.put("size", OString::number(nSize).getStr());
         OUString aText = pRowBar[SC_SPLIT_BOTTOM]->GetEntryText(nRow);
         aRow.put("text", aText.toUtf8().getStr());
         aRows.push_back(std::make_pair("", aRow));
@@ -2307,8 +2304,8 @@ OUString ScTabView::getRowColumnHeaders()
     for (SCCOL nCol = 0; nCol <= nEndCol; ++nCol)
     {
         boost::property_tree::ptree aCol;
-        sal_uInt16 nSize = pColBar[SC_SPLIT_LEFT]->GetEntrySize(nCol);
-        aCol.put("size", OString::number(nSize / nPPTX).getStr());
+        sal_uInt16 nSize = pDoc->GetColWidth(nCol, aViewData.GetTabNo());
+        aCol.put("size", OString::number(nSize).getStr());
         OUString aText = pColBar[SC_SPLIT_LEFT]->GetEntryText(nCol);
         aCol.put("text", aText.toUtf8().getStr());
         aCols.push_back(std::make_pair("", aCol));
commit 901fa421e1d446408116d1fe2eb6f070b5946dc9
Author: Miklos Vajna <vmik...@collabora.co.uk>
Date:   Mon Nov 2 14:59:07 2015 +0100

    gtktiledviewer: show zoom in the status bar
    
    Change-Id: I4ab00a269b0a8435a278f93e1d92d102a80c8506

diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx 
b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
index db7beb4..c8395a3 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.
@@ -846,7 +855,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.
@@ -1086,15 +1096,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.
@@ -1103,6 +1120,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);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to