push2: improve logic of ::set_current_layout() to allow reset of same layout
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 27 Sep 2016 18:47:29 +0000 (13:47 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 27 Sep 2016 19:59:32 +0000 (14:59 -0500)
libs/surfaces/push2/push2.cc

index 77088587b43a7790ec8de33b85fd557c7fb85441..f7606fa641c713ac7e173a3783488f876334ff11 100644 (file)
@@ -1712,20 +1712,26 @@ Push2::get_color (ColorName name)
 void
 Push2::set_current_layout (Push2Layout* layout)
 {
-       if (_current_layout) {
-               _current_layout->hide ();
-               _canvas->root()->remove (_current_layout);
-               _previous_layout = _current_layout;
-       }
+       if (layout && layout == _current_layout) {
+               _current_layout->show ();
+       } else {
 
-       _current_layout = layout;
+               if (_current_layout) {
+                       _current_layout->hide ();
+                       _canvas->root()->remove (_current_layout);
+                       _previous_layout = _current_layout;
+               }
+
+               _current_layout = layout;
+
+               if (_current_layout) {
+                       _canvas->root()->add (_current_layout);
+                       _current_layout->show ();
+               }
 
-       if (_current_layout) {
-               _canvas->root()->add (_current_layout);
-               _current_layout->show ();
-       }
 
-       _canvas->request_redraw ();
+               _canvas->request_redraw ();
+       }
 }
 
 void