ignore state-changes during [meter] context-menu popup (gtkmm bug?)
This commit is contained in:
parent
09243a326a
commit
5dae93e5ea
@ -452,10 +452,12 @@ MeterStrip::popup_level_meter_menu (GdkEventButton* ev)
|
|||||||
|
|
||||||
RadioMenuItem::Group group;
|
RadioMenuItem::Group group;
|
||||||
|
|
||||||
|
_suspend_menu_callbacks = true;
|
||||||
add_level_meter_item (items, group, _("Peak"), MeterPeak);
|
add_level_meter_item (items, group, _("Peak"), MeterPeak);
|
||||||
add_level_meter_item (items, group, _("RMS"), MeterKrms);
|
add_level_meter_item (items, group, _("RMS"), MeterKrms);
|
||||||
|
|
||||||
m->popup (ev->button, ev->time);
|
m->popup (ev->button, ev->time);
|
||||||
|
_suspend_menu_callbacks = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -471,8 +473,8 @@ MeterStrip::add_level_meter_item (Menu_Helpers::MenuList& items, RadioMenuItem::
|
|||||||
void
|
void
|
||||||
MeterStrip::set_meter_type (MeterType m)
|
MeterStrip::set_meter_type (MeterType m)
|
||||||
{
|
{
|
||||||
|
if (_suspend_menu_callbacks) return;
|
||||||
level_meter->set_type (m);
|
level_meter->set_type (m);
|
||||||
//_route->set_meter_type(m);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -116,6 +116,7 @@ class MeterStrip : public Gtk::VBox, public RouteUI
|
|||||||
void parameter_changed (std::string const & p);
|
void parameter_changed (std::string const & p);
|
||||||
void redraw_metrics ();
|
void redraw_metrics ();
|
||||||
|
|
||||||
|
bool _suspend_menu_callbacks;
|
||||||
bool level_meter_button_press (GdkEventButton* ev);
|
bool level_meter_button_press (GdkEventButton* ev);
|
||||||
void popup_level_meter_menu (GdkEventButton* ev);
|
void popup_level_meter_menu (GdkEventButton* ev);
|
||||||
void add_level_meter_item (Gtk::Menu_Helpers::MenuList& items, Gtk::RadioMenuItem::Group& group, std::string const & name, ARDOUR::MeterType mode);
|
void add_level_meter_item (Gtk::Menu_Helpers::MenuList& items, Gtk::RadioMenuItem::Group& group, std::string const & name, ARDOUR::MeterType mode);
|
||||||
|
@ -2125,6 +2125,7 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev)
|
|||||||
|
|
||||||
RadioMenuItem::Group group;
|
RadioMenuItem::Group group;
|
||||||
|
|
||||||
|
_suspend_menu_callbacks = true;
|
||||||
add_level_meter_item_point (items, group, _("Input"), MeterInput);
|
add_level_meter_item_point (items, group, _("Input"), MeterInput);
|
||||||
add_level_meter_item_point (items, group, _("Pre-fader"), MeterPreFader);
|
add_level_meter_item_point (items, group, _("Pre-fader"), MeterPreFader);
|
||||||
add_level_meter_item_point (items, group, _("Post-fader"), MeterPostFader);
|
add_level_meter_item_point (items, group, _("Post-fader"), MeterPostFader);
|
||||||
@ -2138,6 +2139,7 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev)
|
|||||||
add_level_meter_item_type (items, tgroup, _("RMS"), MeterKrms);
|
add_level_meter_item_type (items, tgroup, _("RMS"), MeterKrms);
|
||||||
|
|
||||||
m->popup (ev->button, ev->time);
|
m->popup (ev->button, ev->time);
|
||||||
|
_suspend_menu_callbacks = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -2154,6 +2156,7 @@ MixerStrip::add_level_meter_item_point (Menu_Helpers::MenuList& items,
|
|||||||
void
|
void
|
||||||
MixerStrip::set_meter_point (MeterPoint p)
|
MixerStrip::set_meter_point (MeterPoint p)
|
||||||
{
|
{
|
||||||
|
if (_suspend_menu_callbacks) return;
|
||||||
_route->set_meter_point (p);
|
_route->set_meter_point (p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2171,6 +2174,6 @@ MixerStrip::add_level_meter_item_type (Menu_Helpers::MenuList& items,
|
|||||||
void
|
void
|
||||||
MixerStrip::set_meter_type (MeterType t)
|
MixerStrip::set_meter_type (MeterType t)
|
||||||
{
|
{
|
||||||
//_route->set_meter_type (t);
|
if (_suspend_menu_callbacks) return;
|
||||||
gpm.set_type (t);
|
gpm.set_type (t);
|
||||||
}
|
}
|
||||||
|
@ -308,6 +308,7 @@ class MixerStrip : public RouteUI, public Gtk::EventBox
|
|||||||
void add_input_port (ARDOUR::DataType);
|
void add_input_port (ARDOUR::DataType);
|
||||||
void add_output_port (ARDOUR::DataType);
|
void add_output_port (ARDOUR::DataType);
|
||||||
|
|
||||||
|
bool _suspend_menu_callbacks;
|
||||||
bool level_meter_button_press (GdkEventButton *);
|
bool level_meter_button_press (GdkEventButton *);
|
||||||
void popup_level_meter_menu (GdkEventButton *);
|
void popup_level_meter_menu (GdkEventButton *);
|
||||||
void add_level_meter_item_point (Gtk::Menu_Helpers::MenuList &, Gtk::RadioMenuItem::Group &, std::string const &, ARDOUR::MeterPoint);
|
void add_level_meter_item_point (Gtk::Menu_Helpers::MenuList &, Gtk::RadioMenuItem::Group &, std::string const &, ARDOUR::MeterPoint);
|
||||||
|
@ -307,6 +307,10 @@ PeakMeter::meter_level(uint32_t n, MeterType type) {
|
|||||||
void
|
void
|
||||||
PeakMeter::set_type(MeterType t)
|
PeakMeter::set_type(MeterType t)
|
||||||
{
|
{
|
||||||
|
if (t == _meter_type) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
_meter_type = t;
|
_meter_type = t;
|
||||||
|
|
||||||
if (t & MeterKrms) {
|
if (t & MeterKrms) {
|
||||||
|
Loading…
Reference in New Issue
Block a user