summaryrefslogtreecommitdiffstats
path: root/platform/windows
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-03-06 13:16:52 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-03-06 13:16:52 +0100
commit13954fc33e603aac4f13973b77aa644f7dcc95f0 (patch)
tree4afc6546c675816713c902f0f06a308d97fa8ab1 /platform/windows
parentb85337b7eaf4ba0217046c126e0f8ea4f7e09ea5 (diff)
parentc65a6679248476f554a0876ac32618b580beb010 (diff)
downloadredot-engine-13954fc33e603aac4f13973b77aa644f7dcc95f0.tar.gz
Merge pull request #87452 from bruvzg/native_menu
Move `global_menu_*` methods to a separate `NativeMenu` class.
Diffstat (limited to 'platform/windows')
-rw-r--r--platform/windows/display_server_windows.cpp11
-rw-r--r--platform/windows/display_server_windows.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp
index 99b18759f3..42f8b205c5 100644
--- a/platform/windows/display_server_windows.cpp
+++ b/platform/windows/display_server_windows.cpp
@@ -96,6 +96,11 @@ static void track_mouse_leave_event(HWND hWnd) {
bool DisplayServerWindows::has_feature(Feature p_feature) const {
switch (p_feature) {
+#ifndef DISABLE_DEPRECATED
+ case FEATURE_GLOBAL_MENU: {
+ return (native_menu && native_menu->has_feature(NativeMenu::FEATURE_GLOBAL_MENU));
+ } break;
+#endif
case FEATURE_SUBWINDOWS:
case FEATURE_TOUCHSCREEN:
case FEATURE_MOUSE:
@@ -5465,6 +5470,7 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
if (tts_enabled) {
tts = memnew(TTS_Windows);
}
+ native_menu = memnew(NativeMenu);
// Enforce default keep screen on value.
screen_set_keep_on(GLOBAL_GET("display/window/energy_saving/keep_screen_on"));
@@ -5841,6 +5847,11 @@ DisplayServerWindows::~DisplayServerWindows() {
// Close power request handle.
screen_set_keep_on(false);
+ if (native_menu) {
+ memdelete(native_menu);
+ native_menu = nullptr;
+ }
+
#ifdef GLES3_ENABLED
// destroy windows .. NYI?
// FIXME wglDeleteContext is never called
diff --git a/platform/windows/display_server_windows.h b/platform/windows/display_server_windows.h
index f749185080..cc5099cbb4 100644
--- a/platform/windows/display_server_windows.h
+++ b/platform/windows/display_server_windows.h
@@ -358,6 +358,7 @@ class DisplayServerWindows : public DisplayServer {
HANDLE power_request;
TTS_Windows *tts = nullptr;
+ NativeMenu *native_menu = nullptr;
struct WindowData {
HWND hWnd;