UI: Prevent race condition during emulator startup.

This commit is contained in:
Parker Lamb
2017-07-01 14:36:16 -05:00
parent 0c20f1c0fc
commit fc27b34304
6 changed files with 47 additions and 0 deletions

View File

@@ -163,6 +163,18 @@ void Win32Window::OnClose() {
super::OnClose();
}
void Win32Window::EnableMainMenu() {
if (main_menu_) {
main_menu_->EnableMenuItem(*this);
}
}
void Win32Window::DisableMainMenu() {
if (main_menu_) {
main_menu_->DisableMenuItem(*this);
}
}
bool Win32Window::set_title(const std::wstring& title) {
if (!super::set_title(title)) {
return false;
@@ -628,6 +640,22 @@ Win32MenuItem::~Win32MenuItem() {
}
}
void Win32MenuItem::EnableMenuItem(Window& window) {
int i = 0;
for (auto iter = children_.begin(); iter != children_.end(); ++iter, i++) {
::EnableMenuItem(handle_, i, MF_BYPOSITION | MF_ENABLED);
}
DrawMenuBar((HWND)window.native_handle());
}
void Win32MenuItem::DisableMenuItem(Window& window) {
int i = 0;
for (auto iter = children_.begin(); iter != children_.end(); ++iter, i++) {
::EnableMenuItem(handle_, i, MF_BYPOSITION | MF_GRAYED);
}
DrawMenuBar((HWND)window.native_handle());
}
void Win32MenuItem::OnChildAdded(MenuItem* generic_child_item) {
auto child_item = static_cast<Win32MenuItem*>(generic_child_item);