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