X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fgtkmm2ext%2Fpixfader.cc;h=1e814fd147517b6aa6b0b2ae77f7a06e28cc0004;hb=3a69ff680e190bb9377e4bc13e65cb3981c64c60;hp=b75f9f71c1774a984f389e5442a0c5fbbed6c21b;hpb=587dc283ead31efeb5e0c00eea640d862773186a;p=ardour.git diff --git a/libs/gtkmm2ext/pixfader.cc b/libs/gtkmm2ext/pixfader.cc index b75f9f71c1..1e814fd147 100644 --- a/libs/gtkmm2ext/pixfader.cc +++ b/libs/gtkmm2ext/pixfader.cc @@ -71,7 +71,7 @@ PixFader::PixFader (Gtk::Adjustment& adj, int orientation, int fader_length, int _adjustment.signal_value_changed().connect (mem_fun (*this, &PixFader::adjustment_changed)); _adjustment.signal_changed().connect (mem_fun (*this, &PixFader::adjustment_changed)); - + signal_grab_broken_event ().connect (mem_fun (*this, &PixFader::on_grab_broken_event)); if (_orien == VERT) { CairoWidget::set_size_request(_girth, _span); } else { @@ -325,7 +325,7 @@ PixFader::render (cairo_t *cr, cairo_rectangle_t* area) Gtkmm2ext::rounded_rectangle (cr, CORNER_OFFSET, CORNER_OFFSET, w-CORNER_SIZE, h-CORNER_SIZE, CORNER_RADIUS); cairo_set_source_rgba (cr, 0.505, 0.517, 0.525, 0.4); cairo_fill (cr); - } else if (_hovering) { + } else if (_hovering && CairoWidget::widget_prelight()) { Gtkmm2ext::rounded_rectangle (cr, CORNER_OFFSET, CORNER_OFFSET, w-CORNER_SIZE, h-CORNER_SIZE, CORNER_RADIUS); cairo_set_source_rgba (cr, 0.905, 0.917, 0.925, 0.1); cairo_fill (cr); @@ -365,6 +365,18 @@ PixFader::on_size_allocate (Gtk::Allocation& alloc) update_unity_position (); } +bool +PixFader::on_grab_broken_event (GdkEventGrabBroken* ev) +{ + if (_dragging) { + remove_modal_grab(); + _dragging = false; + gdk_pointer_ungrab (GDK_CURRENT_TIME); + StopGesture (); + } + return (_tweaks & NoButtonForward) ? true : false; +} + bool PixFader::on_button_press_event (GdkEventButton* ev) {