diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index a4a0b28fd..f129f7d5a 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -2289,6 +2289,10 @@ void OS_Windows::_update_window_style(bool p_repaint, bool p_maximized) { } } + if (icon.is_valid()) { + set_icon(icon); + } + SetWindowPos(hWnd, video_mode.always_on_top ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE); if (p_repaint) { @@ -3017,9 +3021,12 @@ void OS_Windows::set_native_icon(const String &p_filename) { void OS_Windows::set_icon(const Ref &p_icon) { ERR_FAIL_COND(!p_icon.is_valid()); - Ref icon = p_icon->duplicate(); - if (icon->get_format() != Image::FORMAT_RGBA8) - icon->convert(Image::FORMAT_RGBA8); + if (icon != p_icon) { + icon = p_icon->duplicate(); + if (icon->get_format() != Image::FORMAT_RGBA8) { + icon->convert(Image::FORMAT_RGBA8); + } + } int w = icon->get_width(); int h = icon->get_height(); diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h index 16ef13d48..662d8981e 100644 --- a/platform/windows/os_windows.h +++ b/platform/windows/os_windows.h @@ -317,6 +317,8 @@ class OS_Windows : public OS { uint32_t move_timer_id; + Ref icon; + HCURSOR hCursor; Size2 min_size;