[gnumeric] Scrollbar sheet objects: make orientation consistent across views.
- From: Morten Welinder <mortenw src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnumeric] Scrollbar sheet objects: make orientation consistent across views.
- Date: Wed, 13 May 2009 22:46:16 -0400 (EDT)
commit 840dcbd2caa617656780cf30aa916fe6602c0912
Author: Morten Welinder <terra gnome org>
Date: Wed May 13 22:45:37 2009 -0400
Scrollbar sheet objects: make orientation consistent across views.
---
ChangeLog | 6 ++++++
NEWS | 1 +
src/sheet-object-widget.c | 21 +++++++++++++++++----
3 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index e4e8cf2..c23aeb4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-05-13 Morten Welinder <terra gnome org>
+
+ * src/sheet-object-widget.c (sheet_widget_scrollbar_create_widget):
+ Record whether the scrollbar is horizontal or vertical so
+ different views will have the same orientation.
+
2009-05-12 Morten Welinder <terra gnome org>
* src/gutils.c (gnm_debug_flag): New function.
diff --git a/NEWS b/NEWS
index df2a3ad..8a758b7 100644
--- a/NEWS
+++ b/NEWS
@@ -24,6 +24,7 @@ Morten:
* Cache large ranges, possibly sorted.
* Add progress display for OO import.
* Improve ssindex' coverage.
+ * Fix problem with scrollbar sheet widgets. [Part of #166487]
Paul Fitzpatrick:
* Extend ssconvert to also merge multiple sheets. [#581616]
diff --git a/src/sheet-object-widget.c b/src/sheet-object-widget.c
index 6b3be07..3e2b687 100644
--- a/src/sheet-object-widget.c
+++ b/src/sheet-object-widget.c
@@ -1246,7 +1246,11 @@ SOW_MAKE_TYPE (adjustment, Adjustment,
#define SHEET_WIDGET_SCROLLBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SHEET_WIDGET_SCROLLBAR_TYPE, SheetWidgetScrollbar))
#define DEP_TO_SCROLLBAR(d_ptr) (SheetWidgetScrollbar *)(((char *)d_ptr) - G_STRUCT_OFFSET(SheetWidgetScrollbar, dep))
-typedef SheetWidgetAdjustment SheetWidgetScrollbar;
+typedef struct {
+ SheetWidgetAdjustment adjustment;
+ int horizontal;
+} SheetWidgetScrollbar;
+
typedef SheetWidgetAdjustmentClass SheetWidgetScrollbarClass;
static GtkWidget *
@@ -1254,15 +1258,18 @@ sheet_widget_scrollbar_create_widget (SheetObjectWidget *sow)
{
SheetObject *so = SHEET_OBJECT (sow);
SheetWidgetAdjustment *swa = SHEET_WIDGET_ADJUSTMENT (sow);
+ SheetWidgetScrollbar *sws = SHEET_WIDGET_SCROLLBAR (sow);
GtkWidget *bar;
/* TODO : this is not exactly accurate, but should catch the worst of it
* However we do not have a way to handle resizes.
*/
- gboolean is_horizontal = range_width (&so->anchor.cell_bound) > range_height (&so->anchor.cell_bound);
+ if (sws->horizontal == -1)
+ sws->horizontal = (range_width (&so->anchor.cell_bound) >
+ range_height (&so->anchor.cell_bound));
swa->being_updated = TRUE;
- bar = is_horizontal
+ bar = sws->horizontal
? gtk_hscrollbar_new (swa->adjustment)
: gtk_vscrollbar_new (swa->adjustment);
GTK_WIDGET_UNSET_FLAGS (bar, GTK_CAN_FOCUS);
@@ -1282,6 +1289,12 @@ sheet_widget_scrollbar_user_config (SheetObject *so, SheetControl *sc)
}
static void
+sheet_widget_scrollbar_init (SheetWidgetScrollbar *sws)
+{
+ sws->horizontal = -1; /* Undecided. */
+}
+
+static void
sheet_widget_scrollbar_class_init (SheetObjectWidgetClass *sow_class)
{
sow_class->create_widget = &sheet_widget_scrollbar_create_widget;
@@ -1289,7 +1302,7 @@ sheet_widget_scrollbar_class_init (SheetObjectWidgetClass *sow_class)
}
GSF_CLASS (SheetWidgetScrollbar, sheet_widget_scrollbar,
- &sheet_widget_scrollbar_class_init, NULL,
+ &sheet_widget_scrollbar_class_init, sheet_widget_scrollbar_init,
SHEET_WIDGET_ADJUSTMENT_TYPE)
/****************************************************************************/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]