Commit 6fa30214 authored by claes's avatar claes

Fix in scroll adjustment at window resize

parent 9d57b650
/*
* Proview $Id: flow_browwidget_gtk.cpp,v 1.2 2007-01-11 11:40:30 claes Exp $
* Proview $Id: flow_browwidget_gtk.cpp,v 1.3 2007-02-01 07:10:33 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -18,6 +18,7 @@
**/
#include <stdlib.h>
#include <math.h>
#include "glow_std.h"
#include "flow.h"
......@@ -54,6 +55,8 @@ struct _BrowWidgetGtk {
GtkWidget *form;
int scroll_h_ignore;
int scroll_v_ignore;
gdouble scroll_h_value;
gdouble scroll_v_value;
};
struct _BrowWidgetGtkClass {
......@@ -119,6 +122,7 @@ static void scroll_callback( flow_sScroll *data)
NULL);
gtk_adjustment_changed(
((GtkScrollbar *)scroll_data->scroll_h)->range.adjustment);
((BrowWidgetGtk *)scroll_data->brow)->scroll_h_value = (gdouble)data->offset_x;
}
if ( scroll_data->scroll_v_managed) {
......@@ -132,6 +136,7 @@ static void scroll_callback( flow_sScroll *data)
((GtkScrollbar *)scroll_data->scroll_v)->range.adjustment);
((BrowWidgetGtk *)scroll_data->brow)->scroll_v_ignore = 1;
gtk_range_set_value( GTK_RANGE(scroll_data->scroll_v), (gdouble)data->offset_y);
((BrowWidgetGtk *)scroll_data->brow)->scroll_v_value = (gdouble)data->offset_y;
}
}
......@@ -146,9 +151,14 @@ static void scroll_h_action( GtkWidget *w,
BrowCtx *ctx = (BrowCtx *) broww->brow_ctx;
gdouble value;
g_object_get( w,
"value", &value,
NULL);
value = gtk_range_get_value( GTK_RANGE(broww->scroll_h));
if ( value == 0 && fabs(broww->scroll_h_value) > 2) {
// Probably a resize that seems to set value to zero, set old value
ctx->change_scrollbar();
return;
}
broww->scroll_h_value = value;
flow_scroll_horizontal( ctx, int(value), 0);
}
......@@ -165,9 +175,16 @@ static void scroll_v_action( GtkWidget *w,
BrowCtx *ctx = (BrowCtx *) broww->brow_ctx;
gdouble value;
g_object_get( w,
"value", &value,
NULL);
value = gtk_range_get_value( GTK_RANGE(broww->scroll_v));
if ( value == 0 && fabs(broww->scroll_v_value) > 2) {
// Probably a resize that seems to set value to zero, set old value
ctx->change_scrollbar();
return;
}
broww->scroll_v_value = value;
flow_scroll_vertical( ctx, int(value), 0);
}
......@@ -328,6 +345,8 @@ GtkWidget *scrolledbrowwidgetgtk_new(
w->scroll_v = gtk_scrolled_window_get_vscrollbar( GTK_SCROLLED_WINDOW(form));
w->scroll_h_ignore = 0;
w->scroll_v_ignore = 0;
w->scroll_h_value = 0;
w->scroll_v_value = 0;
w->form = form;
*browwidget = GTK_WIDGET( w);
......
/*
* Proview $Id: flow_widget_gtk.cpp,v 1.2 2007-01-11 11:40:30 claes Exp $
* Proview $Id: flow_widget_gtk.cpp,v 1.3 2007-02-01 07:10:33 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -18,6 +18,7 @@
**/
#include <stdlib.h>
#include <math.h>
#include "glow_std.h"
#include "flow.h"
......@@ -54,6 +55,8 @@ struct _FlowWidgetGtk {
GtkWidget *form;
int scroll_h_ignore;
int scroll_v_ignore;
gdouble scroll_h_value;
gdouble scroll_v_value;
};
struct _FlowWidgetGtkClass {
......@@ -119,6 +122,7 @@ static void scroll_callback( flow_sScroll *data)
NULL);
gtk_adjustment_changed(
((GtkScrollbar *)scroll_data->scroll_h)->range.adjustment);
((FlowWidgetGtk *)scroll_data->flow)->scroll_h_value = (gdouble)data->offset_x;
}
if ( scroll_data->scroll_v_managed) {
......@@ -130,6 +134,7 @@ static void scroll_callback( flow_sScroll *data)
NULL);
gtk_adjustment_changed(
((GtkScrollbar *)scroll_data->scroll_v)->range.adjustment);
((FlowWidgetGtk *)scroll_data->flow)->scroll_v_value = (gdouble)data->offset_y;
}
}
......@@ -144,9 +149,15 @@ static void scroll_h_action( GtkWidget *w,
FlowCtx *ctx = (FlowCtx *) floww->flow_ctx;
gdouble value;
g_object_get( w,
"value", &value,
NULL);
value = gtk_range_get_value( GTK_RANGE(floww->scroll_h));
if ( value == 0 && fabs(floww->scroll_h_value) > 2) {
// Probably a resize that seems to set value to zero, set old value
ctx->change_scrollbar();
return;
}
floww->scroll_h_value = value;
flow_scroll_horizontal( ctx, int(value), 0);
}
......@@ -163,9 +174,15 @@ static void scroll_v_action( GtkWidget *w,
FlowCtx *ctx = (FlowCtx *) floww->flow_ctx;
gdouble value;
g_object_get( w,
"value", &value,
NULL);
value = gtk_range_get_value( GTK_RANGE(floww->scroll_v));
if ( value == 0 && fabs( floww->scroll_v_value) > 2) {
// Probably a resize that seems to set value to zero, set old value
ctx->change_scrollbar();
return;
}
floww->scroll_v_value = value;
flow_scroll_vertical( ctx, int(value), 0);
}
......
/*
* Proview $Id: glow_growwidget_gtk.cpp,v 1.2 2007-01-11 11:40:31 claes Exp $
* Proview $Id: glow_growwidget_gtk.cpp,v 1.3 2007-02-01 07:10:33 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -18,6 +18,7 @@
**/
#include <stdlib.h>
#include <math.h>
#include "glow_std.h"
#include <gtk/gtk.h>
......@@ -56,6 +57,8 @@ struct _GrowWidgetGtk {
GtkWidget *form;
int scroll_h_ignore;
int scroll_v_ignore;
gdouble scroll_h_value;
gdouble scroll_v_value;
};
struct _GrowWidgetGtkClass {
......@@ -121,6 +124,7 @@ static void scroll_callback( glow_sScroll *data)
NULL);
gtk_adjustment_changed(
((GtkScrollbar *)scroll_data->scroll_h)->range.adjustment);
((GrowWidgetGtk *)scroll_data->grow)->scroll_h_value = (gdouble)data->offset_x;
}
if ( scroll_data->scroll_v_managed) {
......@@ -132,6 +136,7 @@ static void scroll_callback( glow_sScroll *data)
NULL);
gtk_adjustment_changed(
((GtkScrollbar *)scroll_data->scroll_v)->range.adjustment);
((GrowWidgetGtk *)scroll_data->grow)->scroll_v_value = (gdouble)data->offset_y;
}
}
......@@ -146,9 +151,15 @@ static void scroll_h_action( GtkWidget *w,
GrowCtx *ctx = (GrowCtx *) groww->grow_ctx;
gdouble value;
g_object_get( w,
"value", &value,
NULL);
value = gtk_range_get_value( GTK_RANGE(groww->scroll_h));
if ( value == 0 && fabs(groww->scroll_h_value) > 2) {
// Probably a resize that seems to set value to zero, set old value
ctx->change_scrollbar();
return;
}
groww->scroll_h_value = value;
glow_scroll_horizontal( ctx, int(value), 0);
}
......@@ -165,9 +176,15 @@ static void scroll_v_action( GtkWidget *w,
GrowCtx *ctx = (GrowCtx *) groww->grow_ctx;
gdouble value;
g_object_get( w,
"value", &value,
NULL);
value = gtk_range_get_value( GTK_RANGE(groww->scroll_v));
if ( value == 0 && fabs(groww->scroll_v_value) > 2) {
// Probably a resize that seems to set value to zero, set old value
ctx->change_scrollbar();
return;
}
groww->scroll_v_value = value;
glow_scroll_vertical( ctx, int(value), 0);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment