1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-15 13:51:40 +00:00

UWP: Fix app crash when managed_object->update_clipboard() is called

This commit is contained in:
Antokolos
2021-08-02 02:48:10 +06:00
committed by Rémi Verschelde
parent 7722461dc5
commit f5693969f0
4 changed files with 14 additions and 2 deletions

View File

@@ -108,6 +108,9 @@ void App::SetWindow(CoreWindow ^ p_window) {
window->VisibilityChanged +=
ref new TypedEventHandler<CoreWindow ^, VisibilityChangedEventArgs ^>(this, &App::OnVisibilityChanged);
window->Activated +=
ref new TypedEventHandler<CoreWindow ^, WindowActivatedEventArgs ^>(this, &App::OnWindowActivated);
window->Closed +=
ref new TypedEventHandler<CoreWindow ^, CoreWindowEventArgs ^>(this, &App::OnWindowClosed);
@@ -447,6 +450,10 @@ void App::OnVisibilityChanged(CoreWindow ^ sender, VisibilityChangedEventArgs ^
mWindowVisible = args->Visible;
}
void App::OnWindowActivated(CoreWindow ^ sender, WindowActivatedEventArgs ^ args) {
os->update_clipboard();
}
void App::OnWindowClosed(CoreWindow ^ sender, CoreWindowEventArgs ^ args) {
mWindowClosed = true;
}

View File

@@ -69,6 +69,7 @@ namespace GodotUWP
// Window event handlers.
void OnWindowSizeChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ args);
void OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args);
void OnWindowActivated(CoreWindow ^ sender, WindowActivatedEventArgs ^ args);
void OnWindowClosed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CoreWindowEventArgs^ args);
void pointer_event(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args, bool p_pressed, bool p_is_wheel = false);

View File

@@ -284,8 +284,6 @@ Error OS_UWP::initialize(const VideoMode &p_desired, int p_video_driver, int p_a
power_manager = memnew(PowerUWP);
managed_object->update_clipboard();
Clipboard::ContentChanged += ref new EventHandler<Platform::Object ^>(managed_object, &ManagedType::on_clipboard_changed);
accelerometer = Accelerometer::GetDefault();
@@ -387,6 +385,11 @@ void OS_UWP::alert(const String &p_alert, const String &p_title) {
msg->ShowAsync();
}
void OS_UWP::update_clipboard() {
// See https://stackoverflow.com/questions/58660743/uwp-app-crashes-when-clipboard-getcontent-is-called-from-inside-onnavigatedto
managed_object->update_clipboard();
}
void OS_UWP::ManagedType::alert_close(IUICommand ^ command) {
alert_close_handle = false;
}

View File

@@ -226,6 +226,7 @@ public:
virtual bool _check_internal_feature_support(const String &p_feature);
void update_clipboard();
void set_window(Windows::UI::Core::CoreWindow ^ p_window);
void screen_size_changed();