- // Set all others invisible
- for (auto &i : this->controller->surfaces) {
- auto &si = this->controller->sprops[i.second->id];
- if (si.id != s->id && int(si.id) != this->layers.main_surface) {
- i.second->set_visibility(0);
+ this->surface_set_layout_full(*surface_id);
+ this->activate(*surface_id);
+ state.main = *surface_id;
+ state.sub = -1;
+ state.s = LayoutState::Single;
+
+ //////this->emit_flushdraw(drawing_name);
+ this->pending_end_draw.push_back(state.main);
+ } else {
+ bool can_split = this->can_split(state, *surface_id);
+
+ if (state.sub == -1) {
+ if (can_split) {
+ if (state.main != *surface_id) {
+ std::string main = std::move(*this->lookup_name(state.main));
+ this->emit_syncdraw(drawing_name);
+ this->emit_syncdraw(main.c_str());
+
+ this->surface_set_layout_split(state.main, *surface_id);
+ this->activate(*surface_id);
+ state.sub = *surface_id;
+
+ this->pending_end_draw.push_back(state.main);
+ this->pending_end_draw.push_back(state.sub);
+ // Should wait for EndDraw event...
+ //////this->emit_flushdraw(drawing_name);
+ //////this->emit_flushdraw(main.c_str());
+ }
+ } else {
+ this->emit_syncdraw(drawing_name);
+
+ this->surface_set_layout_full(*surface_id);
+ this->deactivate(state.main);
+ this->activate(*surface_id);
+ this->deactivate(state.sub);
+ state.main = *surface_id;
+ state.sub = -1;
+ state.s = LayoutState::Single;
+
+ //////this->emit_flushdraw(drawing_name);
+ this->pending_end_draw.push_back(state.main);
+ }