meterbridge: track size and position via configure events
This allows ::get_state() to be const.
This commit is contained in:
parent
04d34c4061
commit
0d82703f8e
@ -244,19 +244,10 @@ Meterbridge::set_window_pos_and_size ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
Meterbridge::get_window_pos_and_size () const
|
|
||||||
{
|
|
||||||
#warning CONSTIFICATION this really needs to work some other way, since this supposed to be const
|
|
||||||
get_position(m_root_x, m_root_y);
|
|
||||||
get_size(m_width, m_height);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Meterbridge::hide_window (GdkEventAny *ev)
|
Meterbridge::hide_window (GdkEventAny *ev)
|
||||||
{
|
{
|
||||||
if (!_visible) return 0;
|
if (!_visible) return 0;
|
||||||
get_window_pos_and_size();
|
|
||||||
_visible = false;
|
_visible = false;
|
||||||
return just_hide_it(ev, static_cast<Gtk::Window *>(this));
|
return just_hide_it(ev, static_cast<Gtk::Window *>(this));
|
||||||
}
|
}
|
||||||
@ -495,11 +486,6 @@ XMLNode&
|
|||||||
Meterbridge::get_state () const
|
Meterbridge::get_state () const
|
||||||
{
|
{
|
||||||
XMLNode* node = new XMLNode ("Meterbridge");
|
XMLNode* node = new XMLNode ("Meterbridge");
|
||||||
|
|
||||||
if (is_realized() && _visible) {
|
|
||||||
get_window_pos_and_size ();
|
|
||||||
}
|
|
||||||
|
|
||||||
XMLNode* geometry = new XMLNode ("geometry");
|
XMLNode* geometry = new XMLNode ("geometry");
|
||||||
geometry->set_property(X_("x-size"), m_width);
|
geometry->set_property(X_("x-size"), m_width);
|
||||||
geometry->set_property(X_("y-size"), m_height);
|
geometry->set_property(X_("y-size"), m_height);
|
||||||
@ -774,3 +760,18 @@ Meterbridge::on_theme_changed ()
|
|||||||
{
|
{
|
||||||
meter_clear_pattern_cache();
|
meter_clear_pattern_cache();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
Meterbridge::on_configure_event (GdkEventConfigure* conf)
|
||||||
|
{
|
||||||
|
bool ret = Gtk::Window::on_configure_event (conf);
|
||||||
|
|
||||||
|
Glib::RefPtr<const Gdk::Window> win = get_window();
|
||||||
|
|
||||||
|
if (win) {
|
||||||
|
win->get_size (m_width, m_height);
|
||||||
|
win->get_position (m_root_x, m_root_y);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@ -133,7 +133,6 @@ private:
|
|||||||
mutable int m_root_x, m_root_y, m_width, m_height;
|
mutable int m_root_x, m_root_y, m_width, m_height;
|
||||||
|
|
||||||
void set_window_pos_and_size ();
|
void set_window_pos_and_size ();
|
||||||
void get_window_pos_and_size () const;
|
|
||||||
|
|
||||||
bool on_key_press_event (GdkEventKey*);
|
bool on_key_press_event (GdkEventKey*);
|
||||||
bool on_key_release_event (GdkEventKey*);
|
bool on_key_release_event (GdkEventKey*);
|
||||||
@ -153,6 +152,8 @@ private:
|
|||||||
|
|
||||||
int _mm_left, _mm_right;
|
int _mm_left, _mm_right;
|
||||||
ARDOUR::MeterType _mt_left, _mt_right;
|
ARDOUR::MeterType _mt_left, _mt_right;
|
||||||
|
|
||||||
|
bool on_configure_event (GdkEventConfigure* conf);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user