static gint gtk_vruler_motion_notify (GtkWidget *widget, GdkEventMotion *event) { GtkRuler *ruler; gint y; g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_VRULER (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); ruler = GTK_RULER (widget); if (event->is_hint) gdk_window_get_pointer (widget->window, NULL, &y, NULL); else y = event->y; ruler->position = ruler->lower + ((ruler->upper - ruler->lower) * y) / widget->allocation.height; /* Make sure the ruler has been allocated already */ if (ruler->backing_store != NULL) gtk_ruler_draw_pos (ruler); return FALSE; }
/* gtk_ruler_set_pos() - does not work yet, need to reimplement * gtk_ruler_draw_pos(). */ void gtk_shruler_set_pos(GtkSHRuler * ruler, gfloat pos) { GtkRuler * ruler_; g_return_if_fail( ruler != NULL ); ruler_ = GTK_RULER(ruler); if ( pos < ruler_->lower ) pos = ruler_->lower; if ( pos > ruler_->upper ) pos = ruler_->upper; ruler_->position = pos; /* Make sure the ruler has been allocated already */ if ( ruler_->backing_store != NULL ) gtk_ruler_draw_pos(ruler_); }
static gint gtk_hruler_motion_notify (GtkWidget *widget, GdkEventMotion *event) { GtkRuler *ruler; gint x; ruler = GTK_RULER (widget); if (event->is_hint) gdk_window_get_pointer (widget->window, &x, NULL, NULL); else x = event->x; ruler->position = ruler->lower + ((ruler->upper - ruler->lower) * x) / widget->allocation.width; g_object_notify (G_OBJECT (ruler), "position"); /* Make sure the ruler has been allocated already */ if (ruler->backing_store != NULL) gtk_ruler_draw_pos (ruler); return FALSE; }
static VALUE ruler_draw_pos(VALUE self) { gtk_ruler_draw_pos(_SELF(self)); return self; }