ソースを参照

[Windows] Save and re-apply window icon when changing window style.

(cherry picked from commit b268c4b4bc8a1c246984249b2ce88277df47fe78)
bruvzg 3 年 前
コミット
2d3f5855c6
2 ファイル変更12 行追加3 行削除
  1. 10 3
      platform/windows/os_windows.cpp
  2. 2 0
      platform/windows/os_windows.h

+ 10 - 3
platform/windows/os_windows.cpp

@@ -2312,6 +2312,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) {
@@ -3040,9 +3044,12 @@ void OS_Windows::set_native_icon(const String &p_filename) {
 
 void OS_Windows::set_icon(const Ref<Image> &p_icon) {
 	ERR_FAIL_COND(!p_icon.is_valid());
-	Ref<Image> 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();
 

+ 2 - 0
platform/windows/os_windows.h

@@ -318,6 +318,8 @@ class OS_Windows : public OS {
 
 	uint32_t move_timer_id;
 
+	Ref<Image> icon;
+
 	HCURSOR hCursor;
 
 	Size2 min_size;