X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fpanner_interface.cc;h=dcbb36487b03e2cf64d8ea266f0261536711ec66;hb=b8f5306d5bf59ddb237fabcdbab91a7d1e6fd612;hp=95e1e4e7ffcec653312779424447971f6149e963;hpb=6e79521e8b7709458b8ee093e2d0dc6440ffea2c;p=ardour.git diff --git a/gtk2_ardour/panner_interface.cc b/gtk2_ardour/panner_interface.cc index 95e1e4e7ff..dcbb36487b 100644 --- a/gtk2_ardour/panner_interface.cc +++ b/gtk2_ardour/panner_interface.cc @@ -19,19 +19,22 @@ #include #include "gtkmm2ext/keyboard.h" +#include "gtkmm2ext/persistent_tooltip.h" #include "panner_interface.h" -#include "global_signals.h" +#include "panner_editor.h" -#include "i18n.h" +#include "pbd/i18n.h" +using namespace std; using namespace Gtk; using namespace ARDOUR; using namespace Gtkmm2ext; PannerInterface::PannerInterface (boost::shared_ptr p) : _panner (p) - , _drag_data_window (0) - , _drag_data_label (0) + , _tooltip (this) + , _send_mode (false) + , _editor (0) { set_flags (Gtk::CAN_FOCUS); @@ -45,38 +48,7 @@ PannerInterface::PannerInterface (boost::shared_ptr p) PannerInterface::~PannerInterface () { - delete _drag_data_window; -} - -void -PannerInterface::show_drag_data_window () -{ - 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 (get_toplevel()); - if (toplevel) { - _drag_data_window->set_transient_for (*toplevel); - } - } - - if (!_drag_data_window->is_visible ()) { - /* move the window a little away from the mouse */ - int rx, ry; - get_window()->get_origin (rx, ry); - _drag_data_window->move (rx, ry + get_height()); - _drag_data_window->present (); - } + delete _editor; } bool @@ -103,7 +75,69 @@ PannerInterface::on_key_release_event (GdkEventKey*) void PannerInterface::value_change () { - set_drag_data (); + set_tooltip (); queue_draw (); } +bool +PannerInterface::on_button_press_event (GdkEventButton* ev) +{ + if (Gtkmm2ext::Keyboard::is_edit_event (ev)) { + edit (); + return true; + } + + return false; +} + +bool +PannerInterface::on_button_release_event (GdkEventButton* ev) +{ + if (Gtkmm2ext::Keyboard::is_edit_event (ev)) { + /* We edited on the press, so claim the release */ + return true; + } + + return false; +} + +void +PannerInterface::edit () +{ + delete _editor; + _editor = editor (); + _editor->show (); +} + +void +PannerInterface::set_send_drawing_mode(bool onoff) { + if (_send_mode != onoff) { + _send_mode = onoff; + queue_draw (); + } +} + +PannerPersistentTooltip::PannerPersistentTooltip (Gtk::Widget* w) + : PersistentTooltip (w, true) + , _dragging (false) +{ + +} + +void +PannerPersistentTooltip::target_start_drag () +{ + _dragging = true; +} + +void +PannerPersistentTooltip::target_stop_drag () +{ + _dragging = false; +} + +bool +PannerPersistentTooltip::dragging () const +{ + return _dragging; +}