diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-09-27 13:47:29 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-09-27 14:59:32 -0500 |
commit | 303358973fc3551dc73ee2ca5995ea0d9661483c (patch) | |
tree | e625c63efb69786ae496306d8499ed6608d782bc /libs/surfaces | |
parent | 0006f28511e6e763d4d5bc87d3b060a5df887f43 (diff) |
push2: improve logic of ::set_current_layout() to allow reset of same layout
Diffstat (limited to 'libs/surfaces')
-rw-r--r-- | libs/surfaces/push2/push2.cc | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/libs/surfaces/push2/push2.cc b/libs/surfaces/push2/push2.cc index 77088587b4..f7606fa641 100644 --- a/libs/surfaces/push2/push2.cc +++ b/libs/surfaces/push2/push2.cc @@ -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 |