scroll bar
- From: Rúben Rodrigues <ruben_gr live com pt>
- To: "gtk-app-devel-list gnome org" <gtk-app-devel-list gnome org>
- Subject: scroll bar
- Date: Wed, 19 Apr 2017 10:46:20 +0000
Hi guys,
Someone could help with scroll bar, zoom gesture and pan gesture ?
I add this zoom callback, and i need to change the scroll bar. But i
don't understand the paramentes of gtk_adjustment_configure().
static void
zoom_scale_changed (GtkGestureZoom *gesture,
gdouble scale,
GtkWidget *widget)
{
double lower = gtk_adjustment_get_lower(hadjustment);
double upper = gtk_adjustment_get_upper(hadjustment);
double dif = ((upper - lower)*scale - (upper -lower) ) / 2.0 ;
if(dif > 0){
linechart_set_xaxis_minmax(chart, dif , PAGE_SIZE - dif);
gtk_adjustment_configure(hadjustment, dif, lower, PAGE_SIZE -
dif, 1.0, 1.0, PAGE_SIZE);
}else{
linechart_set_xaxis_minmax(chart, 0.0 , PAGE_SIZE);
gtk_adjustment_configure(hadjustment, 0.0, 0.0, PAGE_SIZE, 1.0,
1.0, PAGE_SIZE);
}
gtk_widget_queue_draw (widget);
}
static void pan_pos_changed (GtkGesturePan *gesture,
GtkPanDirection direction,
gdouble offset,
GtkWidget *widget){
double value = gtk_adjustment_get_value(hadjustment);
double lower = gtk_adjustment_get_lower(hadjustment);
double upper = gtk_adjustment_get_upper(hadjustment);
switch (direction){
case GTK_PAN_DIRECTION_LEFT:
linechart_set_xaxis_minmax(chart, lower - offset , upper -
offset);
break;
case GTK_PAN_DIRECTION_RIGHT:
linechart_set_xaxis_minmax(chart, lower + offset , upper +
offset);
break;
}
gtk_widget_queue_draw (widget);
}
To configure callback and gesture i use this:
/* Zoom */
gesture = gtk_gesture_zoom_new (canvas);
g_signal_connect (gesture, "scale-changed",
G_CALLBACK (zoom_scale_changed), canvas);
gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER
(gesture),
GTK_PHASE_BUBBLE);
g_object_weak_ref (G_OBJECT (canvas), (GWeakNotify) g_object_unref,
gesture);
/* Pan */
gesture = gtk_gesture_pan_new(canvas,GTK_ORIENTATION_HORIZONTAL);
g_signal_connect (gesture, "pan",
G_CALLBACK (pan_pos_changed), canvas);
gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER
(gesture),
GTK_PHASE_BUBBLE);
g_object_weak_ref (G_OBJECT (canvas), (GWeakNotify) g_object_unref,
gesture);
hadjustment = gtk_adjustment_new(0, 0, 0, 0, 0, 0);
g_signal_connect(G_OBJECT(hadjustment), "value-changed",
(GCallback)value_changed, NULL);
hscrollbar = gtk_scrollbar_new(GTK_ORIENTATION_HORIZONTAL, hadjustment);
gtk_adjustment_configure(hadjustment, 0.0, 0.0, PAGE_SIZE, 1.0, 1.0,
PAGE_SIZE);
The pan gesture don't works, never go to callback function.
Thanks
---
Este e-mail foi verificado em termos de vírus pelo software antivírus Avast.
https://www.avast.com/antivirus
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]