Merge keeps currently selected droplet

This commit is contained in:
Christian Colglazier 2022-01-22 15:01:36 -05:00
parent af3bf7bcf5
commit 8618675c2d
3 changed files with 41 additions and 4 deletions

View File

@ -40,10 +40,18 @@ void ProcessControls() {
droplet_right = GetDroplet(DropletState::kRight,
left_menu->GetBufferState());
}
// Disable split
// Merge
else {
droplet_left->UpdateState(DropletState::kFull);
delete droplet_right;
if (selected_menu == left_menu) {
droplet_left->UpdateState(DropletState::kFull);
delete droplet_right;
} else {
droplet_right->UpdateState(DropletState::kFull);
delete droplet_left;
droplet_left = droplet_right;
left_menu->SetState(right_menu->GetBufferState());
selected_menu = left_menu;
}
}
}
// Switch side

View File

@ -109,6 +109,17 @@ MenuState Menu::GetState() {
return highlighted->GetState();
}
void Menu::SetState(MenuState state) {
MenuItem* ptr = head;
while(ptr != NULL) {
if (ptr->GetState() == state) {
Select(ptr);
return;
}
ptr = ptr->GetNext();
}
}
MenuState Menu::GetBufferState() {
return buffer->GetState();
}
@ -124,8 +135,12 @@ void Menu::UpdateMenuState() {
}
void Menu::Select() {
Select(highlighted);
}
void Menu::Select(MenuItem* item) {
if (selected->GetState() != MenuState::kSplit) {
buffer = selected;
}
selected = highlighted;
selected = item;
}

View File

@ -84,6 +84,13 @@ class Menu {
* @return menu state
*/
MenuState GetState();
/*
* Set the menu state.
*
* @param state menu state
*/
void SetState(MenuState state);
/*
* Returns the previously selected menu item.
@ -102,6 +109,13 @@ class Menu {
* Select the currently highlighted menu item.
*/
void Select();
/*
* Select the given menu item.
*
* @param item menu item to select
*/
void Select(MenuItem* item);
};
#endif // DROPLETS_MENU_H_