gtk_adjustment_set_value()
- From: Tim Janik <Tim Janik Hamburg Netsurf DE>
- To: |gtk mailing list <gtk-list redhat com>
- Subject: gtk_adjustment_set_value()
- Date: Wed, 14 May 1997 11:14:13 +0200 (CEST)
hi there,
i have a GtkList in a scrolled window and would like to adjust the offset
of the vscrollbar of the GtkScrolledWindow, so that the selected item is
not outside of the visible part.
the position (between 0 and 1) of the offset is quite easy:
> gfloat pos, range;
>
> if (GTK_LIST(List)->selection)
> pos = gtk_list_child_position (GTK_LIST(List),
> GTK_LIST(List)->selection->data) /
> ( g_list_length(GTK_LIST(List)->children) - 1.0 );
> else
> pos = 0;
>
then i change the Adjustment to reflect the required position:
> Adjustment=gtk_scrolled_window_get_vadjustment(SWindow);
>
> range = Adjustment->upper - Adjustment->lower;
>
> Adjustment->value = Adjustment->lower - Adjustment->page_size/2;
> Adjustment->value += range * pos;
> Adjustment->value = CLAMP( Adjustment->value,
> Adjustment->lower,
> Adjustment->upper - Adjustment->page_size);
if i want the GtkScrolledWindow to reflect my changes i have to emit
> gtk_signal_emit_by_name(GTK_OBJECT(Adjustment), "value_changed");
by hand.
is the signal emission outside gtk correct?
couldn't there just be a function like:
> void
> gtk_adjustment_set_value (GtkAdjustment *widget,
> gfloat value)
> {
> GtkAdjustment *adjustment;
>
> g_return_if_fail ( widget != NULL );
>
> adjustment = GTK_ADJUSTMENT( widget );
>
> adjustment->value = value;
>
> gtk_signal_emit_by_name(GTK_OBJECT(adjustment), "value_changed");
> }
maybe including some checks and stuff?
---
ciaoTJ
Tim.Janik@Hamburg.Netsurf.DE [signature: <CENS||ED>]
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]