Mercurial > foo_out_sdl
diff foosdk/sdk/foobar2000/shared/modal_dialog.cpp @ 1:20d02a178406 default tip
*: check in everything else
yay
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 05 Jan 2026 02:15:46 -0500 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/foosdk/sdk/foobar2000/shared/modal_dialog.cpp Mon Jan 05 02:15:46 2026 -0500 @@ -0,0 +1,66 @@ +#include "shared.h" + +static DWORD g_main_thread = GetCurrentThreadId(); + +static t_modal_dialog_entry g_status = {0,false}; + +static bool TestMainThread() +{ + if (GetCurrentThreadId() == g_main_thread) return true; + OutputDebugString(TEXT("This function can be called only from main thread.\n")); + return false; +} + +HWND SHARED_EXPORT FindOwningPopup(HWND p_wnd) +{ + return pfc::findOwningPopup(p_wnd); +} + +void SHARED_EXPORT PokeWindow(HWND p_wnd) +{ + p_wnd = FindOwningPopup(p_wnd); + if (IsWindowEnabled(p_wnd)) + { +// SetForegroundWindow(p_wnd); + SetActiveWindow(p_wnd); + FlashWindow(p_wnd,FALSE); + } + else + { + HWND child = GetWindow(p_wnd,GW_ENABLEDPOPUP); + if (child != 0) + { +// SetForegroundWindow(child); + SetActiveWindow(child); + FlashWindow(child,FALSE); + } + } +} + +extern "C" { + void SHARED_EXPORT ModalDialog_Switch(t_modal_dialog_entry & p_entry) + { + if (TestMainThread()) + pfc::swap_t(p_entry,g_status); + } + + void SHARED_EXPORT ModalDialog_PokeExisting() + { + if (TestMainThread()) + { + if (g_status.m_in_use && g_status.m_wnd_to_poke != 0) + { + PokeWindow(g_status.m_wnd_to_poke); + MessageBeep(0); + } + } + } + + bool SHARED_EXPORT ModalDialog_CanCreateNew() + { + if (TestMainThread()) + return !g_status.m_in_use; + else + return false; + } +} \ No newline at end of file
