/*
Copyright (C) 2005 Paul Davis
-
+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
using namespace Gtk;
using namespace Gtkmm2ext;
-PixScroller::PixScroller (Adjustment& a,
+PixScroller::PixScroller (Adjustment& a,
Glib::RefPtr<Gdk::Pixbuf> s,
Glib::RefPtr<Gdk::Pixbuf> r)
: adj (a),
rail_surface = Cairo::ImageSurface::create (format, rail->get_width(), rail->get_height());
rail_context = Cairo::Context::create (rail_surface);
Gdk::Cairo::set_source_pixbuf (rail_context, rail, 0.0, 0.0);
- rail_context->paint();
+ rail_context->paint();
if (slider->get_has_alpha()) {
format = Cairo::FORMAT_ARGB32;
slider_surface = Cairo::ImageSurface::create (format, slider->get_width(), slider->get_height());
slider_context = Cairo::Context::create (slider_surface);
Gdk::Cairo::set_source_pixbuf (slider_context, slider, 0.0, 0.0);
- slider_context->paint();
+ slider_context->paint();
}
void
GdkRectangle intersect;
Glib::RefPtr<Gdk::Window> win (get_window());
Cairo::RefPtr<Cairo::Context> context = get_window()->create_cairo_context();
-
+
if (gdk_rectangle_intersect (railrect.gobj(), &ev->area, &intersect)) {
context->save();
context->paint();
context->restore();
}
-
+
if (gdk_rectangle_intersect (sliderrect.gobj(), &ev->area, &intersect)) {
context->save();
break;
default:
break;
- }
-
+ }
+
return false;
}
PixScroller::on_button_release_event (GdkEventButton* ev)
{
double scale;
-
+
if (ev->state & Keyboard::PrimaryModifier) {
if (ev->state & Keyboard::SecondaryModifier) {
scale = 0.05;
PixScroller::on_scroll_event (GdkEventScroll* ev)
{
double scale;
-
+
if (ev->state & Keyboard::PrimaryModifier) {
if (ev->state & Keyboard::SecondaryModifier) {
scale = 0.05;
grab_window = ev->window;
return true;
}
-
+
if (ev->state & Keyboard::PrimaryModifier) {
if (ev->state & Keyboard::SecondaryModifier) {
scale = 0.05;
fract = min (1.0, fract);
fract = max (-1.0, fract);
-
+
fract = -fract;
adj.set_value (adj.get_value() + scale * fract * (adj.get_upper() - adj.get_lower()));