You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-16 14:00:40 +00:00
UWP: Fix app crash when managed_object->update_clipboard() is called
This commit is contained in:
committed by
Rémi Verschelde
parent
7722461dc5
commit
f5693969f0
@@ -108,6 +108,9 @@ void App::SetWindow(CoreWindow ^ p_window) {
|
|||||||
window->VisibilityChanged +=
|
window->VisibilityChanged +=
|
||||||
ref new TypedEventHandler<CoreWindow ^, VisibilityChangedEventArgs ^>(this, &App::OnVisibilityChanged);
|
ref new TypedEventHandler<CoreWindow ^, VisibilityChangedEventArgs ^>(this, &App::OnVisibilityChanged);
|
||||||
|
|
||||||
|
window->Activated +=
|
||||||
|
ref new TypedEventHandler<CoreWindow ^, WindowActivatedEventArgs ^>(this, &App::OnWindowActivated);
|
||||||
|
|
||||||
window->Closed +=
|
window->Closed +=
|
||||||
ref new TypedEventHandler<CoreWindow ^, CoreWindowEventArgs ^>(this, &App::OnWindowClosed);
|
ref new TypedEventHandler<CoreWindow ^, CoreWindowEventArgs ^>(this, &App::OnWindowClosed);
|
||||||
|
|
||||||
@@ -447,6 +450,10 @@ void App::OnVisibilityChanged(CoreWindow ^ sender, VisibilityChangedEventArgs ^
|
|||||||
mWindowVisible = args->Visible;
|
mWindowVisible = args->Visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void App::OnWindowActivated(CoreWindow ^ sender, WindowActivatedEventArgs ^ args) {
|
||||||
|
os->update_clipboard();
|
||||||
|
}
|
||||||
|
|
||||||
void App::OnWindowClosed(CoreWindow ^ sender, CoreWindowEventArgs ^ args) {
|
void App::OnWindowClosed(CoreWindow ^ sender, CoreWindowEventArgs ^ args) {
|
||||||
mWindowClosed = true;
|
mWindowClosed = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ namespace GodotUWP
|
|||||||
// Window event handlers.
|
// Window event handlers.
|
||||||
void OnWindowSizeChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ args);
|
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 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 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);
|
void pointer_event(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args, bool p_pressed, bool p_is_wheel = false);
|
||||||
|
|||||||
@@ -284,8 +284,6 @@ Error OS_UWP::initialize(const VideoMode &p_desired, int p_video_driver, int p_a
|
|||||||
|
|
||||||
power_manager = memnew(PowerUWP);
|
power_manager = memnew(PowerUWP);
|
||||||
|
|
||||||
managed_object->update_clipboard();
|
|
||||||
|
|
||||||
Clipboard::ContentChanged += ref new EventHandler<Platform::Object ^>(managed_object, &ManagedType::on_clipboard_changed);
|
Clipboard::ContentChanged += ref new EventHandler<Platform::Object ^>(managed_object, &ManagedType::on_clipboard_changed);
|
||||||
|
|
||||||
accelerometer = Accelerometer::GetDefault();
|
accelerometer = Accelerometer::GetDefault();
|
||||||
@@ -387,6 +385,11 @@ void OS_UWP::alert(const String &p_alert, const String &p_title) {
|
|||||||
msg->ShowAsync();
|
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) {
|
void OS_UWP::ManagedType::alert_close(IUICommand ^ command) {
|
||||||
alert_close_handle = false;
|
alert_close_handle = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -226,6 +226,7 @@ public:
|
|||||||
|
|
||||||
virtual bool _check_internal_feature_support(const String &p_feature);
|
virtual bool _check_internal_feature_support(const String &p_feature);
|
||||||
|
|
||||||
|
void update_clipboard();
|
||||||
void set_window(Windows::UI::Core::CoreWindow ^ p_window);
|
void set_window(Windows::UI::Core::CoreWindow ^ p_window);
|
||||||
void screen_size_changed();
|
void screen_size_changed();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user