mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-06 05:35:47 +01:00
make window-manager session-aware
This commit is contained in:
parent
cb6f16ac2d
commit
a22e20133d
2 changed files with 38 additions and 8 deletions
|
|
@ -47,7 +47,7 @@ namespace WM {
|
|||
|
||||
class ProxyBase;
|
||||
|
||||
class Manager
|
||||
class Manager : public ARDOUR::SessionHandlePtr
|
||||
{
|
||||
public:
|
||||
static Manager& instance();
|
||||
|
|
@ -75,7 +75,7 @@ class Manager
|
|||
static Manager* _instance;
|
||||
};
|
||||
|
||||
class ProxyBase : public sigc::trackable {
|
||||
class ProxyBase : public ARDOUR::SessionHandlePtr, public sigc::trackable {
|
||||
public:
|
||||
ProxyBase (const std::string& name, const std::string& menu_name);
|
||||
ProxyBase (const std::string& name, const std::string& menu_name, const XMLNode&);
|
||||
|
|
@ -106,7 +106,7 @@ class ProxyBase : public sigc::trackable {
|
|||
XMLNode& get_state () const;
|
||||
|
||||
virtual ARDOUR::SessionHandlePtr* session_handle () = 0;
|
||||
|
||||
|
||||
operator bool() const { return _window != 0; }
|
||||
|
||||
protected:
|
||||
|
|
@ -122,6 +122,7 @@ class ProxyBase : public sigc::trackable {
|
|||
Gtkmm2ext::VisibilityTracker* vistracker;
|
||||
|
||||
void save_pos_and_size ();
|
||||
bool handle_win_event (GdkEventAny *ev);
|
||||
|
||||
void setup ();
|
||||
};
|
||||
|
|
@ -139,7 +140,7 @@ class ProxyTemporary: public ProxyBase {
|
|||
Gtk::Window* operator->() {
|
||||
return _window;
|
||||
}
|
||||
|
||||
|
||||
ARDOUR::SessionHandlePtr* session_handle ();
|
||||
};
|
||||
|
||||
|
|
@ -177,6 +178,15 @@ class ProxyWithConstructor: public ProxyBase {
|
|||
return dynamic_cast<T*> (_window);
|
||||
}
|
||||
|
||||
void set_session(ARDOUR::Session *s) {
|
||||
SessionHandlePtr::set_session (s);
|
||||
ARDOUR::SessionHandlePtr* sp = session_handle ();
|
||||
if (sp) {
|
||||
sp->set_session (s);
|
||||
dynamic_cast<T*>(_window)->set_session(s);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
boost::function<T*()> creator;
|
||||
};
|
||||
|
|
@ -215,6 +225,15 @@ class Proxy : public ProxyBase {
|
|||
return dynamic_cast<T*> (_window);
|
||||
}
|
||||
|
||||
void set_session(ARDOUR::Session *s) {
|
||||
SessionHandlePtr::set_session (s);
|
||||
ARDOUR::SessionHandlePtr* sp = session_handle ();
|
||||
if (sp) {
|
||||
sp->set_session (s);
|
||||
dynamic_cast<T*>(_window)->set_session(s);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
boost::function<T*()> creator;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue