diff options
author | Carl Hetherington <carl@carlh.net> | 2011-12-26 14:05:19 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2011-12-26 14:05:19 +0000 |
commit | 6e79521e8b7709458b8ee093e2d0dc6440ffea2c (patch) | |
tree | f85f50dbf9ced89620bbe1667e1553675180d823 /gtk2_ardour/stereo_panner.cc | |
parent | 0dbc0429a81bb10b558f83d66c5be098d287f293 (diff) |
Move some bits from MonoPanner and StereoPanner into a
common base class.
git-svn-id: svn://localhost/ardour2/branches/3.0@11071 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/stereo_panner.cc')
-rw-r--r-- | gtk2_ardour/stereo_panner.cc | 77 |
1 files changed, 7 insertions, 70 deletions
diff --git a/gtk2_ardour/stereo_panner.cc b/gtk2_ardour/stereo_panner.cc index e55d2c1b20..6da8a249fc 100644 --- a/gtk2_ardour/stereo_panner.cc +++ b/gtk2_ardour/stereo_panner.cc @@ -57,7 +57,7 @@ bool StereoPanner::have_colors = false; using namespace ARDOUR; StereoPanner::StereoPanner (boost::shared_ptr<Panner> panner) - : _panner (panner) + : PannerInterface (panner) , position_control (_panner->pannable()->pan_azimuth_control) , width_control (_panner->pannable()->pan_width_control) , dragging (false) @@ -68,8 +68,6 @@ StereoPanner::StereoPanner (boost::shared_ptr<Panner> panner) , last_drag_x (0) , accumulated_delta (0) , detented (false) - , drag_data_window (0) - , drag_data_label (0) , position_binder (position_control) , width_binder (width_control) { @@ -81,26 +79,18 @@ StereoPanner::StereoPanner (boost::shared_ptr<Panner> panner) position_control->Changed.connect (connections, invalidator(*this), boost::bind (&StereoPanner::value_change, this), gui_context()); width_control->Changed.connect (connections, invalidator(*this), boost::bind (&StereoPanner::value_change, this), gui_context()); - set_flags (Gtk::CAN_FOCUS); - - add_events (Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK| - Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK| - Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK| - Gdk::SCROLL_MASK| - Gdk::POINTER_MOTION_MASK); - ColorsChanged.connect (sigc::mem_fun (*this, &StereoPanner::color_handler)); } StereoPanner::~StereoPanner () { - delete drag_data_window; + } void StereoPanner::set_drag_data () { - if (!drag_data_label) { + if (!_drag_data_label) { return; } @@ -118,14 +108,7 @@ StereoPanner::set_drag_data () snprintf (buf, sizeof (buf), "L:%3d R:%3d Width:%d%%", (int) rint (100.0 * (1.0 - pos)), (int) rint (100.0 * pos), (int) floor (100.0 * width_control->get_value())); - drag_data_label->set_markup (buf); -} - -void -StereoPanner::value_change () -{ - set_drag_data (); - queue_draw (); + _drag_data_label->set_markup (buf); } bool @@ -427,8 +410,8 @@ StereoPanner::on_button_release_event (GdkEventButton* ev) accumulated_delta = 0; detented = false; - if (drag_data_window) { - drag_data_window->hide (); + if (_drag_data_window) { + _drag_data_window->hide (); } if (Keyboard::modifier_state_contains (ev->state, Keyboard::TertiaryModifier)) { @@ -487,32 +470,7 @@ StereoPanner::on_motion_notify_event (GdkEventMotion* ev) return false; } - if (!drag_data_window) { - drag_data_window = new Window (WINDOW_POPUP); - drag_data_window->set_name (X_("ContrastingPopup")); - drag_data_window->set_position (WIN_POS_MOUSE); - drag_data_window->set_decorated (false); - - drag_data_label = manage (new Label); - drag_data_label->set_use_markup (true); - - drag_data_window->set_border_width (6); - drag_data_window->add (*drag_data_label); - drag_data_label->show (); - - Window* toplevel = dynamic_cast<Window*> (get_toplevel()); - if (toplevel) { - drag_data_window->set_transient_for (*toplevel); - } - } - - if (!drag_data_window->is_visible ()) { - /* move the popup window vertically down from the panner display */ - int rx, ry; - get_window()->get_origin (rx, ry); - drag_data_window->move (rx, ry+get_height()); - drag_data_window->present (); - } + show_drag_data_window (); int w = get_width(); double delta = (ev->x - last_drag_x) / (double) w; @@ -616,27 +574,6 @@ StereoPanner::on_key_press_event (GdkEventKey* ev) return true; } -bool -StereoPanner::on_key_release_event (GdkEventKey*) -{ - return false; -} - -bool -StereoPanner::on_enter_notify_event (GdkEventCrossing*) -{ - grab_focus (); - Keyboard::magic_widget_grab_focus (); - return false; -} - -bool -StereoPanner::on_leave_notify_event (GdkEventCrossing*) -{ - Keyboard::magic_widget_drop_focus (); - return false; -} - void StereoPanner::set_colors () { |