summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPranav Kant <pranavk@collabora.co.uk>2017-07-12 22:43:39 +0530
committerPranav Kant <pranavk@collabora.co.uk>2017-07-12 22:43:39 +0530
commit75b40d031d9ce80838e1e6c31ab8f832a1d3355f (patch)
treedafdb3982207d981ee51965cc50a90bcc82ff100
parentrow column bar compilable (diff)
downloadcore-75b40d031d9ce80838e1e6c31ab8f832a1d3355f.tar.gz
core-75b40d031d9ce80838e1e6c31ab8f832a1d3355f.zip
working row colum headers
Change-Id: Id19871ed0f4ed8e8c8fe32277389eb635d0f040d
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx13
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.cxx39
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.hxx13
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx13
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx9
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.hxx2
6 files changed, 50 insertions, 39 deletions
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
index 6456ecf2ab09..cf3986518c45 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-application-window.cxx
@@ -15,6 +15,7 @@
#include <gtv-application-window.hxx>
#include <gtv-main-toolbar.hxx>
#include <gtv-helpers.hxx>
+#include <gtv-signal-handlers.hxx>
#include <gtv-lokdocview-signal-handlers.hxx>
#include <gtv-calc-header-bar.hxx>
@@ -57,18 +58,22 @@ gtv_application_window_init(GtvApplicationWindow* win)
gtk_box_pack_start(GTK_BOX(priv->container), priv->toolbarcontainer, false, false, false);
gtk_box_reorder_child(GTK_BOX(priv->container), priv->toolbarcontainer, 0);
-
priv->gridcontainer = GTK_WIDGET(gtk_builder_get_object(builder, "maingrid"));
// scrolled window containing the main drawing area
win->scrolledwindow = GTK_WIDGET(gtk_builder_get_object(builder, "scrolledwindow"));
+ GtkAdjustment* pHAdjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(win->scrolledwindow));
+ g_signal_connect(pHAdjustment, "value-changed", G_CALLBACK(docAdjustmentChanged), win);
+ GtkAdjustment* pVAdjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(win->scrolledwindow));
+ g_signal_connect(pVAdjustment, "value-changed", G_CALLBACK(docAdjustmentChanged), win);
+
// calc header row bar
win->cornerarea = gtv_calc_header_bar_new();
- gtv_calc_header_bar_set_type(GTV_CALC_HEADER_BAR(win->cornerarea), CalcHeaderType::CORNER);
+ gtv_calc_header_bar_set_type_and_width(GTV_CALC_HEADER_BAR(win->cornerarea), CalcHeaderType::CORNER);
win->rowbar = gtv_calc_header_bar_new();
- gtv_calc_header_bar_set_type(GTV_CALC_HEADER_BAR(win->rowbar), CalcHeaderType::ROW);
+ gtv_calc_header_bar_set_type_and_width(GTV_CALC_HEADER_BAR(win->rowbar), CalcHeaderType::ROW);
win->columnbar = gtv_calc_header_bar_new();
- gtv_calc_header_bar_set_type(GTV_CALC_HEADER_BAR(win->columnbar), CalcHeaderType::COLUMN);
+ gtv_calc_header_bar_set_type_and_width(GTV_CALC_HEADER_BAR(win->columnbar), CalcHeaderType::COLUMN);
// attach row/colum/corner to the container
gtk_grid_attach(GTK_GRID(priv->gridcontainer), win->cornerarea, 0, 0, 1, 1);
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.cxx b/libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.cxx
index 14fc944b50d4..fe10069b7259 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.cxx
@@ -21,11 +21,6 @@
#include <boost/property_tree/json_parser.hpp>
#include <boost/optional.hpp>
-struct _GtvCalcHeaderBar
-{
- GtkDrawingArea parent;
-};
-
struct GtvCalcHeaderBarPrivateImpl
{
/// Stores size and content of a single row header.
@@ -40,10 +35,6 @@ struct GtvCalcHeaderBarPrivateImpl
};
std::vector<Header> m_aHeaders;
- /// Height for row bar, width for column bar.
- int m_nSizePixel;
- /// Left/top position for the column/row bar -- initially 0, then may grow due to scrolling.
- int m_nPositionPixel;
CalcHeaderType m_eType;
};
@@ -97,7 +88,8 @@ void gtv_calc_header_bar_draw_text(cairo_t* pCairo, const GdkRectangle& rRectang
gboolean gtv_calc_header_bar_draw_impl(GtkWidget* pWidget, cairo_t* pCairo)
{
- GtvCalcHeaderBarPrivate& priv = getPrivate(GTV_CALC_HEADER_BAR(pWidget));
+ GtvCalcHeaderBar* self = GTV_CALC_HEADER_BAR(pWidget);
+ GtvCalcHeaderBarPrivate& priv = getPrivate(GTV_CALC_HEADER_BAR(self));
cairo_set_source_rgb(pCairo, 0, 0, 0);
int nPrevious = 0;
@@ -139,7 +131,7 @@ gboolean gtv_calc_header_bar_draw_impl(GtkWidget* pWidget, cairo_t* pCairo)
gtv_calc_header_bar_draw_text(pCairo, aRectangle, rHeader.m_aText);
nPrevious = rHeader.m_nSize;
- if (rHeader.m_nSize > priv->m_nSizePixel)
+ if (rHeader.m_nSize > self->m_nSizePixel)
break;
}
@@ -164,19 +156,7 @@ gtv_calc_header_bar_class_init(GtvCalcHeaderBarClass* klass)
G_OBJECT_CLASS(klass)->finalize = gtv_calc_header_bar_finalize;
}
-int gtv_calc_header_bar_get_pos_pixel(GtvCalcHeaderBar* bar)
-{
- GtvCalcHeaderBarPrivate& priv = getPrivate(bar);
- return priv->m_nPositionPixel;
-}
-
-int gtv_calc_header_bar_get_size_pixel(GtvCalcHeaderBar* bar)
-{
- GtvCalcHeaderBarPrivate& priv = getPrivate(bar);
- return priv->m_nSizePixel;
-}
-
-void gtv_calc_header_bar_configure(GtvCalcHeaderBar* bar, const boost::property_tree::ptree* values, int nPositionPixel)
+void gtv_calc_header_bar_configure(GtvCalcHeaderBar* bar, const boost::property_tree::ptree* values)
{
GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(bar)));
GtvCalcHeaderBarPrivate& priv = getPrivate(bar);
@@ -189,9 +169,9 @@ void gtv_calc_header_bar_configure(GtvCalcHeaderBar* bar, const boost::property_
for (boost::property_tree::ptree::value_type& rValue : val)
{
int nSize = std::round(lok_doc_view_twip_to_pixel(LOK_DOC_VIEW(window->lokdocview), std::atof(rValue.second.get<std::string>("size").c_str())));
- if (nSize >= nPositionPixel)
+ if (nSize >= bar->m_nPositionPixel)
{
- const int nScrolledSize = nSize - nPositionPixel;
+ const int nScrolledSize = nSize - bar->m_nPositionPixel;
GtvCalcHeaderBarPrivateImpl::Header aHeader(nScrolledSize, rValue.second.get<std::string>("text"));
priv->m_aHeaders.push_back(aHeader);
}
@@ -206,11 +186,16 @@ void gtv_calc_header_bar_configure(GtvCalcHeaderBar* bar, const boost::property_
}
void
-gtv_calc_header_bar_set_type(GtvCalcHeaderBar* bar, CalcHeaderType eType)
+gtv_calc_header_bar_set_type_and_width(GtvCalcHeaderBar* bar, CalcHeaderType eType)
{
// TODO: Install type property for this class
GtvCalcHeaderBarPrivate& priv = getPrivate(bar);
priv->m_eType = eType;
+
+ if (eType == CalcHeaderType::ROW)
+ gtk_widget_set_size_request(GTK_WIDGET(bar), ROW_HEADER_WIDTH, -1);
+ else if (eType == CalcHeaderType::COLUMN)
+ gtk_widget_set_size_request(GTK_WIDGET(bar), -1, COLUMN_HEADER_HEIGHT);
}
GtkWidget*
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.hxx b/libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.hxx
index 957b0104e916..daf29803b254 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.hxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.hxx
@@ -19,17 +19,26 @@ G_BEGIN_DECLS
#define GTV_CALC_HEADER_BAR_TYPE (gtv_calc_header_bar_get_type())
G_DECLARE_FINAL_TYPE(GtvCalcHeaderBar, gtv_calc_header_bar, GTV, CALC_HEADER_BAR, GtkDrawingArea);
+struct _GtvCalcHeaderBar
+{
+ GtkDrawingArea parent;
+ /// Height for row bar, width for column bar.
+ int m_nSizePixel;
+ /// Left/top position for the column/row bar -- initially 0, then may grow due to scrolling.
+ int m_nPositionPixel;
+};
+
enum CalcHeaderType { ROW, COLUMN, CORNER };
GtkWidget* gtv_calc_header_bar_new();
-void gtv_calc_header_bar_configure(GtvCalcHeaderBar* bar, const boost::property_tree::ptree* values, int nPositionPixel);
+void gtv_calc_header_bar_configure(GtvCalcHeaderBar* bar, const boost::property_tree::ptree* values);
int gtv_calc_header_bar_get_pos_pixel(GtvCalcHeaderBar* bar);
int gtv_calc_header_bar_get_size_pixel(GtvCalcHeaderBar* bar);
-void gtv_calc_header_bar_set_type(GtvCalcHeaderBar* bar, CalcHeaderType eType);
+void gtv_calc_header_bar_set_type_and_width(GtvCalcHeaderBar* bar, CalcHeaderType eType);
G_END_DECLS
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx b/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
index ea1c10769e65..fec8742cfdd2 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
@@ -222,15 +222,16 @@ void lokdocview_commentCallback(LOKDocView* pDocView, gchar* pComment, gpointer)
gboolean lokdocview_configureEvent(GtkWidget* pWidget, GdkEventConfigure* pEvent, gpointer pData)
{
GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(pWidget)));
+ printf("configuring");
LibreOfficeKitDocument* pDocument = lok_doc_view_get_document(LOK_DOC_VIEW(window->lokdocview));
if (pDocument && pDocument->pClass->getDocumentType(pDocument) == LOK_DOCTYPE_SPREADSHEET)
{
GtkAdjustment* pVAdjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(window->scrolledwindow));
- int rowSizePixel = gtk_adjustment_get_page_size(pVAdjustment);
- int rowPosPixel = gtk_adjustment_get_value(pVAdjustment);
+ int rowSizePixel = GTV_CALC_HEADER_BAR(window->rowbar)->m_nSizePixel = gtk_adjustment_get_page_size(pVAdjustment);
+ int rowPosPixel = GTV_CALC_HEADER_BAR(window->rowbar)->m_nPositionPixel = gtk_adjustment_get_value(pVAdjustment);
GtkAdjustment* pHAdjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(window->scrolledwindow));
- int colSizePixel = gtk_adjustment_get_page_size(pHAdjustment);
- int colPosPixel = gtk_adjustment_get_value(pHAdjustment);
+ int colSizePixel = GTV_CALC_HEADER_BAR(window->columnbar)->m_nSizePixel = gtk_adjustment_get_page_size(pHAdjustment);
+ int colPosPixel = GTV_CALC_HEADER_BAR(window->columnbar)->m_nPositionPixel = gtk_adjustment_get_value(pHAdjustment);
std::stringstream aCommand;
aCommand << ".uno:ViewRowColumnHeaders";
@@ -249,8 +250,8 @@ gboolean lokdocview_configureEvent(GtkWidget* pWidget, GdkEventConfigure* pEvent
boost::property_tree::ptree aTree;
boost::property_tree::read_json(aStream, aTree);
- gtv_calc_header_bar_configure(GTV_CALC_HEADER_BAR(window->rowbar), &aTree.get_child("rows"), rowPosPixel);
- gtv_calc_header_bar_configure(GTV_CALC_HEADER_BAR(window->columnbar), &aTree.get_child("columns"), colPosPixel);
+ gtv_calc_header_bar_configure(GTV_CALC_HEADER_BAR(window->rowbar), &aTree.get_child("rows"));
+ gtv_calc_header_bar_configure(GTV_CALC_HEADER_BAR(window->columnbar), &aTree.get_child("columns"));
// for corner ? gtv_calc_header_bar_configure(window->rowbar);
}
}
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx
index 4d41abd804e0..a02c110f8f4f 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.cxx
@@ -11,6 +11,7 @@
#include <gtv-application-window.hxx>
#include <gtv-helpers.hxx>
+#include <gtv-lokdocview-signal-handlers.hxx>
#include <sal/types.h>
@@ -522,4 +523,12 @@ void toggleFindbar(GtkWidget* pButton, gpointer /*pItem*/)
gtv_application_window_toggle_findbar(window);
}
+void docAdjustmentChanged(GtkAdjustment*, gpointer pData)
+{
+ GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(pData);
+ printf("doc adjust ch : %p", window->lokdocview);
+ if (window->lokdocview)
+ lokdocview_configureEvent(window->lokdocview, nullptr, nullptr);
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.hxx b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.hxx
index ee9350bee976..a918bc731053 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.hxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-signal-handlers.hxx
@@ -36,6 +36,8 @@ void documentRedline(GtkWidget* pButton, gpointer /*pItem*/);
void documentRepair(GtkWidget* pButton, gpointer /*pItem*/);
+void docAdjustmentChanged(GtkAdjustment*, gpointer);
+
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */