42 add_events (Gdk::BUTTON_PRESS_MASK |
43 Gdk::BUTTON_RELEASE_MASK |
44 Gdk::POINTER_MOTION_MASK |
58 double range =
adj.get_upper() -
adj.get_lower();
59 double pixel2val = range / get_height();
60 double val_at_pointer = ((get_height() - ev->y) * pixel2val) +
adj.get_lower();
61 double delta_y = ev->y -
grab_y;
64 double scale, temp, zoom;
77 if (ev->y < 0 || ev->y > get_height ()) {
93 fract = min (1.0, fract);
94 fract = max (-1.0, fract);
105 unzoomed_val += scale * fract * range;
107 unzoomed_val = max(unzoomed_val,
adj.get_lower());
117 unzoomed_val -= scale * fract * range * 0.5;
119 unzoomed_val = max(unzoomed_val,
adj.get_lower());
125 unzoomed_val += scale * fract * range;
127 unzoomed_val = max(unzoomed_val,
adj.get_lower());
133 unzoomed_page -= scale * fract * range;
149 if (ev->x > (get_width() * 2)) {
150 zoom = ev->x - get_width();
155 higher *= zoom / 128;
164 val = max(val, val_at_pointer - half_min_page);
165 }
else if (lower > 0) {
166 val = min(val, val_at_pointer - half_min_page);
170 page = min(page,
adj.get_upper() - val);
171 }
else if (ev->x < 0) {
204 adj.set_page_size (rint (page));
205 adj.set_value (rint (val));
214 switch (ev->direction) {
216 adj.set_value (min (
adj.get_value() +
adj.get_page_size() / 10.0,
adj.get_upper() -
adj.get_page_size()));
218 case GDK_SCROLL_DOWN:
219 adj.set_value (
adj.get_value() -
adj.get_page_size() / 10.0);
231 if (ev->button == 1 || ev->button == 3) {
245 if (ev->button == 3){
254 if (ev->type == GDK_2BUTTON_PRESS && ev->button == 1) {
274 if (ev->button != 1 && ev->button != 3) {
303 Gtk::DrawingArea::on_size_allocate(a);
334 for (
int i = 0; i <
Total; ++i) {
355 double range =
adj.get_upper() -
adj.get_lower();
358 double coeff = ((double) height) / range;
377 Glib::RefPtr<Gdk::Window> win = get_window();
386 rect.set_width(get_width());
391 win->invalidate_rect(rect,
false);
395 win->invalidate_rect(rect,
false);
401 win->invalidate_rect(rect,
false);
405 win->invalidate_rect(rect,
false);
void set_min_page_size(double page_size)
bool on_motion_notify_event(GdkEventMotion *)
void set_comp_rect(GdkRectangle &, Component) const
virtual void on_size_allocate(Gtk::Allocation &)
Scroomer(Gtk::Adjustment &adjustment)
void adjustment_changed()
sigc::signal0< void > DragFinishing
bool on_button_press_event(GdkEventButton *)
bool on_button_release_event(GdkEventButton *)
static uint32_t PrimaryModifier
sigc::signal0< void > DoubleClicked
sigc::signal0< void > DragStarting
static uint32_t SecondaryModifier
bool on_scroll_event(GdkEventScroll *)
static double const handle_size
Component point_in(double point) const