fix phase invert button functionality, lost in switch to ArdourButton
git-svn-id: svn://localhost/ardour2/branches/3.0@10842 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
96ae97ddcb
commit
9bf55b26e8
@ -1765,7 +1765,7 @@ void
|
|||||||
RouteUI::setup_invert_buttons ()
|
RouteUI::setup_invert_buttons ()
|
||||||
{
|
{
|
||||||
/* remove old invert buttons */
|
/* remove old invert buttons */
|
||||||
for (list<ArdourButton*>::iterator i = _invert_buttons.begin(); i != _invert_buttons.end(); ++i) {
|
for (vector<ArdourButton*>::iterator i = _invert_buttons.begin(); i != _invert_buttons.end(); ++i) {
|
||||||
_invert_button_box.remove (**i);
|
_invert_button_box.remove (**i);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1781,8 +1781,8 @@ RouteUI::setup_invert_buttons ()
|
|||||||
|
|
||||||
for (uint32_t i = 0; i < to_add; ++i) {
|
for (uint32_t i = 0; i < to_add; ++i) {
|
||||||
ArdourButton* b = manage (new ArdourButton);
|
ArdourButton* b = manage (new ArdourButton);
|
||||||
b->StateChanged.connect (sigc::bind (sigc::mem_fun (*this, &RouteUI::invert_toggled), i, b));
|
|
||||||
b->signal_button_press_event().connect (sigc::mem_fun (*this, &RouteUI::invert_press));
|
b->signal_button_press_event().connect (sigc::mem_fun (*this, &RouteUI::invert_press));
|
||||||
|
b->signal_button_release_event().connect (sigc::bind (sigc::mem_fun (*this, &RouteUI::invert_release), i));
|
||||||
|
|
||||||
b->set_name (X_("mixer strip button"));
|
b->set_name (X_("mixer strip button"));
|
||||||
if (to_add == 1) {
|
if (to_add == 1) {
|
||||||
@ -1817,32 +1817,24 @@ RouteUI::set_invert_button_state ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
int j = 0;
|
int j = 0;
|
||||||
for (list<ArdourButton*>::iterator i = _invert_buttons.begin(); i != _invert_buttons.end(); ++i, ++j) {
|
for (vector<ArdourButton*>::iterator i = _invert_buttons.begin(); i != _invert_buttons.end(); ++i, ++j) {
|
||||||
(*i)->set_active (_route->phase_invert (j));
|
(*i)->set_active (_route->phase_invert (j));
|
||||||
}
|
}
|
||||||
|
|
||||||
--_i_am_the_modifier;
|
--_i_am_the_modifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
bool
|
||||||
RouteUI::invert_toggled (uint32_t i, ArdourButton* b)
|
RouteUI::invert_release (GdkEventButton* ev, uint32_t i)
|
||||||
{
|
{
|
||||||
if (_i_am_the_modifier) {
|
if (ev->button == 1 && i < _invert_buttons.size()) {
|
||||||
return;
|
_route->set_phase_invert (i, !_invert_buttons[i]->get_active());
|
||||||
}
|
return true;
|
||||||
|
|
||||||
uint32_t const N = _route->input()->n_ports().n_audio();
|
|
||||||
if (N <= _max_invert_buttons) {
|
|
||||||
_route->set_phase_invert (i, b->get_active ());
|
|
||||||
} else {
|
|
||||||
boost::dynamic_bitset<> p (N);
|
|
||||||
if (b->get_active ()) {
|
|
||||||
p.set ();
|
|
||||||
}
|
|
||||||
_route->set_phase_invert (p);
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
RouteUI::invert_press (GdkEventButton* ev)
|
RouteUI::invert_press (GdkEventButton* ev)
|
||||||
{
|
{
|
||||||
@ -1884,7 +1876,7 @@ RouteUI::invert_menu_toggled (uint32_t c)
|
|||||||
void
|
void
|
||||||
RouteUI::set_invert_sensitive (bool yn)
|
RouteUI::set_invert_sensitive (bool yn)
|
||||||
{
|
{
|
||||||
for (list<ArdourButton*>::iterator b = _invert_buttons.begin(); b != _invert_buttons.end(); ++b) {
|
for (vector<ArdourButton*>::iterator b = _invert_buttons.begin(); b != _invert_buttons.end(); ++b) {
|
||||||
(*b)->set_sensitive (yn);
|
(*b)->set_sensitive (yn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -271,12 +271,12 @@ class RouteUI : public virtual AxisView
|
|||||||
|
|
||||||
void setup_invert_buttons ();
|
void setup_invert_buttons ();
|
||||||
void set_invert_button_state ();
|
void set_invert_button_state ();
|
||||||
void invert_toggled (uint32_t, ArdourButton *);
|
|
||||||
void invert_menu_toggled (uint32_t);
|
void invert_menu_toggled (uint32_t);
|
||||||
bool invert_press (GdkEventButton *);
|
bool invert_press (GdkEventButton *);
|
||||||
|
bool invert_release (GdkEventButton *, uint32_t i);
|
||||||
|
|
||||||
int _i_am_the_modifier;
|
int _i_am_the_modifier;
|
||||||
std::list<ArdourButton*> _invert_buttons;
|
std::vector<ArdourButton*> _invert_buttons;
|
||||||
Gtk::Menu* _invert_menu;
|
Gtk::Menu* _invert_menu;
|
||||||
|
|
||||||
static void set_showing_sends_to (boost::shared_ptr<ARDOUR::Route>);
|
static void set_showing_sends_to (boost::shared_ptr<ARDOUR::Route>);
|
||||||
|
Loading…
Reference in New Issue
Block a user