|
 |
f325b2 |
From d2cc43af0d971232e843b20a7f2370baf5aecd17 Mon Sep 17 00:00:00 2001
|
|
 |
f325b2 |
From: Miklos Vajna <vmiklos@collabora.co.uk>
|
|
 |
f325b2 |
Date: Fri, 30 Oct 2015 16:20:58 +0100
|
|
 |
f325b2 |
Subject: [PATCH 247/398] gtktiledviewer: add missing spreadsheet corner button
|
|
 |
f325b2 |
|
|
 |
f325b2 |
Change-Id: I3a7af693ccdce2012ddbaa6a3ac8321f29b6356c
|
|
 |
f325b2 |
(cherry picked from commit f5ab3e84dfd58722dc74c7369c1ad67237ca462e)
|
|
 |
f325b2 |
---
|
|
 |
f325b2 |
.../qa/gtktiledviewer/gtktiledviewer.cxx | 52 +++++++++++++++++++++-
|
|
 |
f325b2 |
1 file changed, 51 insertions(+), 1 deletion(-)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
|
|
 |
f325b2 |
index 08058e8699c9..eec80ba0b727 100644
|
|
 |
f325b2 |
--- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
|
|
 |
f325b2 |
+++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
|
|
 |
f325b2 |
@@ -67,6 +67,16 @@ public:
|
|
 |
f325b2 |
static void drawText(cairo_t* pCairo, const GdkRectangle& rRectangle, const std::string& rText);
|
|
 |
f325b2 |
};
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+/// Represents the button at the top left corner for spreadsheets.
|
|
 |
f325b2 |
+class TiledCornerButton
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+public:
|
|
 |
f325b2 |
+ GtkWidget* m_pDrawingArea;
|
|
 |
f325b2 |
+ TiledCornerButton();
|
|
 |
f325b2 |
+ static gboolean draw(GtkWidget* pWidget, cairo_t* pCairo, gpointer pData);
|
|
 |
f325b2 |
+ gboolean drawImpl(GtkWidget* pWidget, cairo_t* pCairo);
|
|
 |
f325b2 |
+};
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
/// Represents all the state that is specific to one GtkWindow of this app.
|
|
 |
f325b2 |
class TiledWindow
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
@@ -93,6 +103,7 @@ public:
|
|
 |
f325b2 |
bool m_bFindAll;
|
|
 |
f325b2 |
std::shared_ptr<TiledRowColumnBar> m_pRowBar;
|
|
 |
f325b2 |
std::shared_ptr<TiledRowColumnBar> m_pColumnBar;
|
|
 |
f325b2 |
+ std::shared_ptr<TiledCornerButton> m_pCornerButton;
|
|
 |
f325b2 |
|
|
 |
f325b2 |
TiledWindow()
|
|
 |
f325b2 |
: m_pDocView(0),
|
|
 |
f325b2 |
@@ -169,6 +180,9 @@ gboolean TiledRowColumnBar::drawImpl(GtkWidget* /*pWidget*/, cairo_t* pCairo)
|
|
 |
f325b2 |
aRectangle.y = nTotal - 1;
|
|
 |
f325b2 |
aRectangle.width = ROW_HEADER_WIDTH - 1;
|
|
 |
f325b2 |
aRectangle.height = rHeader.m_nSize;
|
|
 |
f325b2 |
+ // Left line.
|
|
 |
f325b2 |
+ cairo_rectangle(pCairo, aRectangle.x, aRectangle.y, 1, aRectangle.height);
|
|
 |
f325b2 |
+ cairo_fill(pCairo);
|
|
 |
f325b2 |
// Bottom line.
|
|
 |
f325b2 |
cairo_rectangle(pCairo, aRectangle.x, aRectangle.y + aRectangle.height, aRectangle.width, 1);
|
|
 |
f325b2 |
cairo_fill(pCairo);
|
|
 |
f325b2 |
@@ -178,10 +192,13 @@ gboolean TiledRowColumnBar::drawImpl(GtkWidget* /*pWidget*/, cairo_t* pCairo)
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
else
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
- aRectangle.x = nTotal -1;
|
|
 |
f325b2 |
+ aRectangle.x = nTotal - 1;
|
|
 |
f325b2 |
aRectangle.y = 0;
|
|
 |
f325b2 |
aRectangle.width = rHeader.m_nSize;
|
|
 |
f325b2 |
aRectangle.height = COLUMN_HEADER_HEIGHT - 1;
|
|
 |
f325b2 |
+ // Top line.
|
|
 |
f325b2 |
+ cairo_rectangle(pCairo, aRectangle.x, aRectangle.y, aRectangle.width, 1);
|
|
 |
f325b2 |
+ cairo_fill(pCairo);
|
|
 |
f325b2 |
// Right line.
|
|
 |
f325b2 |
cairo_rectangle(pCairo, aRectangle.x + aRectangle.width , aRectangle.y, 1, aRectangle.height);
|
|
 |
f325b2 |
cairo_fill(pCairo);
|
|
 |
f325b2 |
@@ -216,6 +233,8 @@ gboolean TiledRowColumnBar::docConfigureEvent(GtkWidget* pDocView, GdkEventConfi
|
|
 |
f325b2 |
boost::property_tree::ptree aTree;
|
|
 |
f325b2 |
boost::property_tree::read_json(aStream, aTree);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+ gtk_widget_show(rWindow.m_pCornerButton->m_pDrawingArea);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
rWindow.m_pRowBar->m_aHeaders.clear();
|
|
 |
f325b2 |
for (boost::property_tree::ptree::value_type& rValue : aTree.get_child("rows"))
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
@@ -238,6 +257,33 @@ gboolean TiledRowColumnBar::docConfigureEvent(GtkWidget* pDocView, GdkEventConfi
|
|
 |
f325b2 |
return TRUE;
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+TiledCornerButton::TiledCornerButton()
|
|
 |
f325b2 |
+ : m_pDrawingArea(gtk_drawing_area_new())
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ gtk_widget_set_size_request(m_pDrawingArea, TiledRowColumnBar::ROW_HEADER_WIDTH, TiledRowColumnBar::COLUMN_HEADER_HEIGHT);
|
|
 |
f325b2 |
+ g_signal_connect(m_pDrawingArea, "draw", G_CALLBACK(TiledCornerButton::draw), this);
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+gboolean TiledCornerButton::draw(GtkWidget* pWidget, cairo_t* pCairo, gpointer pData)
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ return static_cast<TiledCornerButton*>(pData)->drawImpl(pWidget, pCairo);
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+gboolean TiledCornerButton::drawImpl(GtkWidget* /*pWidget*/, cairo_t* pCairo)
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ cairo_set_source_rgb(pCairo, 0, 0, 0);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ GdkRectangle aRectangle;
|
|
 |
f325b2 |
+ aRectangle.x = 0;
|
|
 |
f325b2 |
+ aRectangle.y = 0;
|
|
 |
f325b2 |
+ aRectangle.width = TiledRowColumnBar::ROW_HEADER_WIDTH;
|
|
 |
f325b2 |
+ aRectangle.height = TiledRowColumnBar::COLUMN_HEADER_HEIGHT;
|
|
 |
f325b2 |
+ cairo_rectangle(pCairo, aRectangle.x, aRectangle.y, aRectangle.width, aRectangle.height);
|
|
 |
f325b2 |
+ cairo_stroke(pCairo);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ return FALSE;
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
static void lcl_registerToolItem(TiledWindow& rWindow, GtkToolItem* pItem, const std::string& rName)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
rWindow.m_aToolItemCommandNames[pItem] = rName;
|
|
 |
f325b2 |
@@ -946,6 +992,9 @@ static GtkWidget* createWindow(TiledWindow& rWindow)
|
|
 |
f325b2 |
// Grid for the row/column bar + doc view.
|
|
 |
f325b2 |
GtkWidget* pGrid = gtk_grid_new();
|
|
 |
f325b2 |
gtk_container_add(GTK_CONTAINER(rWindow.m_pVBox), pGrid);
|
|
 |
f325b2 |
+ rWindow.m_pCornerButton.reset(new TiledCornerButton());
|
|
 |
f325b2 |
+ // "A1" cell of the grid.
|
|
 |
f325b2 |
+ gtk_grid_attach(GTK_GRID(pGrid), rWindow.m_pCornerButton->m_pDrawingArea, 0, 0, 1, 1);
|
|
 |
f325b2 |
rWindow.m_pRowBar.reset(new TiledRowColumnBar(TiledRowColumnBar::ROW));
|
|
 |
f325b2 |
// "A2" cell of the grid.
|
|
 |
f325b2 |
gtk_grid_attach(GTK_GRID(pGrid), rWindow.m_pRowBar->m_pDrawingArea, 0, 1, 1, 1);
|
|
 |
f325b2 |
@@ -976,6 +1025,7 @@ static GtkWidget* createWindow(TiledWindow& rWindow)
|
|
 |
f325b2 |
// Hide the findbar by default.
|
|
 |
f325b2 |
gtk_widget_hide(rWindow.m_pFindbar);
|
|
 |
f325b2 |
// Same for the row/column bar.
|
|
 |
f325b2 |
+ gtk_widget_hide(rWindow.m_pCornerButton->m_pDrawingArea);
|
|
 |
f325b2 |
gtk_widget_hide(rWindow.m_pRowBar->m_pDrawingArea);
|
|
 |
f325b2 |
gtk_widget_hide(rWindow.m_pColumnBar->m_pDrawingArea);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
--
|
|
 |
f325b2 |
2.12.0
|
|
 |
f325b2 |
|