static void scroll_h_action( Widget w, XtPointer client_data, XtPointer call_data) { XmScrollBarCallbackStruct *cbs = (XmScrollBarCallbackStruct *) call_data; FlowCtx *ctx = (FlowCtx *) ((FlowWidget) client_data)->flow.flow_ctx; switch( cbs->reason) { case XmCR_DRAG: case XmCR_VALUE_CHANGED: case XmCR_INCREMENT: case XmCR_DECREMENT: case XmCR_PAGE_INCREMENT: case XmCR_PAGE_DECREMENT: case XmCR_TO_TOP: case XmCR_TO_BOTTOM: flow_scroll_horizontal( ctx, cbs->value, 0); break; } }
static void scroll_h_action( GtkWidget *w, gpointer data) { BrowWidgetGtk *broww = (BrowWidgetGtk *)data; if ( broww->scroll_h_ignore) { broww->scroll_h_ignore = 0; return; } BrowCtx *ctx = (BrowCtx *) broww->brow_ctx; gdouble value; 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); }