improve size and positioning of Tabbable's after being torn off, hidden, reshown...
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 26 Feb 2016 23:51:23 +0000 (18:51 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 26 Feb 2016 23:51:32 +0000 (18:51 -0500)
libs/gtkmm2ext/gtkmm2ext/window_proxy.h
libs/gtkmm2ext/tabbable.cc
libs/gtkmm2ext/window_proxy.cc

index abacca24281bf41517a8f02599f614a3f1896b69..c5949701d9369100a3bbc85f71f3ce4fee3c8622 100644 (file)
@@ -87,6 +87,7 @@ class LIBGTKMM2EXT_API WindowProxy : public PBD::StatefulDestructible, public vi
 
        void save_pos_and_size ();
        void set_pos_and_size ();
+       void set_pos ();
 
        virtual bool delete_event_handler (GdkEventAny *ev);
 
index be898a55553b4daff6b0e148f129379bfb351b48..a0ff19909676722364ac0e6f9a620b6169ad533f 100644 (file)
@@ -197,6 +197,7 @@ void
 Tabbable::make_visible ()
 {
        if (_window && (current_toplevel() == _window)) {
+               set_pos ();
                _window->present ();
        } else {
 
index b40e37304644cbd8a28a303c3d320f38739f8e06..6ad6a4d86bab08d23f2c278de3eb9d87f55a61af 100644 (file)
@@ -333,7 +333,7 @@ WindowProxy::set_pos_and_size ()
        }
 
        if (_width != -1 && _height != -1) {
-               _window->set_default_size (_width, _height);
+               _window->resize (_width, _height);
        }
 
        if (_x_off != -1 && _y_off != -1) {
@@ -341,3 +341,19 @@ WindowProxy::set_pos_and_size ()
        }
 }
 
+void
+WindowProxy::set_pos ()
+{
+       if (!_window) {
+               return;
+       }
+
+       if (_width != -1 || _height != -1 || _x_off != -1 || _y_off != -1) {
+               /* cancel any mouse-based positioning */
+               _window->set_position (Gtk::WIN_POS_NONE);
+       }
+
+       if (_x_off != -1 && _y_off != -1) {
+               _window->move (_x_off, _y_off);
+       }
+}