[gnumeric] Stf: improve fixed-width ruler.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Stf: improve fixed-width ruler.
- Date: Thu, 25 Apr 2013 02:22:05 +0000 (UTC)
commit f19646ce3a346151fa4c84341834ed5f4d9e207c
Author: Morten Welinder <terra gnome org>
Date: Wed Apr 24 22:21:42 2013 -0400
Stf: improve fixed-width ruler.
src/dialogs/ChangeLog | 6 ++++++
src/dialogs/dialog-stf-fixed-page.c | 16 ++++++++++++----
src/dialogs/dialog-stf-preview.c | 22 ++++++++++++++--------
3 files changed, 32 insertions(+), 12 deletions(-)
---
diff --git a/src/dialogs/ChangeLog b/src/dialogs/ChangeLog
index b7a7e4b..883207f 100644
--- a/src/dialogs/ChangeLog
+++ b/src/dialogs/ChangeLog
@@ -1,5 +1,11 @@
2013-04-24 Morten Welinder <terra gnome org>
+ * dialog-stf-fixed-page.c (cb_treeview_motion): Take cell padding
+ into account.
+
+ * dialog-stf-preview.c (stf_preview_find_column): Cleanup using
+ gtk+ 3.2 functions. Take cell padding into account.
+
* dialog-stf-fixed-page.c (stf_dialog_fixed_page_init): Cleanup.
Gtk+ 3.2 has the required fix.
diff --git a/src/dialogs/dialog-stf-fixed-page.c b/src/dialogs/dialog-stf-fixed-page.c
index f42b910..d365007 100644
--- a/src/dialogs/dialog-stf-fixed-page.c
+++ b/src/dialogs/dialog-stf-fixed-page.c
@@ -86,7 +86,9 @@ calc_char_index (RenderData_t *renderdata, int col, int *dx)
GtkCellRenderer *cell = stf_preview_get_cell_renderer (renderdata, col);
PangoLayout *layout;
PangoFontDescription *font_desc;
- int ci, width;
+ int ci, width, padx;
+
+ gtk_cell_renderer_get_padding (cell, &padx, NULL);
g_object_get (G_OBJECT (cell), "font_desc", &font_desc, NULL);
layout = gtk_widget_create_pango_layout (GTK_WIDGET (renderdata->tree_view), "x");
@@ -96,7 +98,7 @@ calc_char_index (RenderData_t *renderdata, int col, int *dx)
pango_font_description_free (font_desc);
if (width < 1) width = 1;
- ci = (*dx < 0) ? 0 : (*dx + width / 2) / width;
+ ci = (*dx < padx) ? 0 : (*dx - padx + width / 2) / width;
*dx -= ci * width;
return ci;
@@ -522,8 +524,14 @@ cb_treeview_motion (GtkWidget *widget,
if (col >= 0 && col < renderdata->colcount) {
int ci = calc_char_index (renderdata, col, &dx);
- if (ci <= colwidth)
- pagedata->fixed.ruler_x = x - dx - 1;
+ if (ci <= colwidth) {
+ int padx;
+ GtkCellRenderer *cell =
+ stf_preview_get_cell_renderer (renderdata, col);
+
+ gtk_cell_renderer_get_padding (cell, &padx, NULL);
+ pagedata->fixed.ruler_x = x - dx + padx;
+ }
}
gdk_event_request_motions (event);
diff --git a/src/dialogs/dialog-stf-preview.c b/src/dialogs/dialog-stf-preview.c
index 284e8dc..41eea64 100644
--- a/src/dialogs/dialog-stf-preview.c
+++ b/src/dialogs/dialog-stf-preview.c
@@ -314,17 +314,23 @@ stf_preview_find_column (RenderData_t *renderdata, int x, int *pcol, int *dx)
*dx = 0;
/* Figure out what column we pressed in. */
- for (col = 0; 1; col++) {
- GtkWidget *w;
- GtkAllocation a;
+ for (col = 0; TRUE; col++) {
+ int cx, cw;
GtkTreeViewColumn *column =
stf_preview_get_column (renderdata, col);
- if (!column)
+ GtkCellRenderer *cell =
+ stf_preview_get_cell_renderer (renderdata, col);
+ int padx;
+
+ if (!column || !cell)
break;
- w = gtk_bin_get_child (GTK_BIN (gtk_tree_view_column_get_button (column)));
- gtk_widget_get_allocation (w, &a);
- if (x < a.x + a.width) {
- *dx = x - a.x;
+
+ gtk_cell_renderer_get_padding (cell, &padx, NULL);
+ cx = gtk_tree_view_column_get_x_offset (column);
+ cw = gtk_tree_view_column_get_width (column);
+
+ if (x < (cx + padx) + cw) {
+ *dx = x - (cx + padx);
break;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]