33 PixScroller::PixScroller (Adjustment& a,
34 Glib::RefPtr<Gdk::Pixbuf> s,
35 Glib::RefPtr<Gdk::Pixbuf> r)
43 add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
61 if (
rail->get_has_alpha()) {
62 format = Cairo::FORMAT_ARGB32;
64 format = Cairo::FORMAT_RGB24;
68 Gdk::Cairo::set_source_pixbuf (rail_context,
rail, 0.0, 0.0);
69 rail_context->paint();
71 if (
slider->get_has_alpha()) {
72 format = Cairo::FORMAT_ARGB32;
74 format = Cairo::FORMAT_RGB24;
78 Gdk::Cairo::set_source_pixbuf (slider_context,
slider, 0.0, 0.0);
79 slider_context->paint();
92 GdkRectangle intersect;
93 Glib::RefPtr<Gdk::Window> win (get_window());
94 Cairo::RefPtr<Cairo::Context> context = get_window()->create_cairo_context();
96 if (gdk_rectangle_intersect (
railrect.gobj(), &ev->area, &intersect)) {
99 context->rectangle (intersect.x, intersect.y, intersect.width, intersect.height);
102 context->rectangle (intersect.x, intersect.y, intersect.width, intersect.height);
108 if (gdk_rectangle_intersect (
sliderrect.gobj(), &ev->area, &intersect)) {
111 context->rectangle (intersect.x, intersect.y, intersect.width, intersect.height);
114 context->rectangle (intersect.x, intersect.y, intersect.width, intersect.height);
126 switch (ev->button) {
159 switch (ev->button) {
176 fract = min (1.0, fract);
177 fract = max (0.0, fract);
179 adj.set_value (scale * fract * (
adj.get_upper() -
adj.get_lower()));
209 switch (ev->direction) {
213 adj.set_value (
adj.get_value() + (
adj.get_page_increment() * scale));
215 case GDK_SCROLL_DOWN:
217 adj.set_value (
adj.get_value() - (
adj.get_page_increment() * scale));
252 fract = (delta /
railrect.get_height());
254 fract = min (1.0, fract);
255 fract = max (-1.0, fract);
259 adj.set_value (
adj.get_value() + scale * fract * (
adj.get_upper() -
adj.get_lower()));
static uint32_t TertiaryModifier
static uint32_t PrimaryModifier
static uint32_t SecondaryModifier