48 lines
2.1 KiB
Diff
48 lines
2.1 KiB
Diff
|
|
From 0de2a19f3935fd25dffc7e6b4931bb5c4a377d6a Mon Sep 17 00:00:00 2001
|
|||
|
|
From: luoqing <luoqing@kylinsec.com.cn>
|
|||
|
|
Date: Tue, 27 Feb 2024 11:06:34 +0800
|
|||
|
|
Subject: [PATCH 1008/1008] fix(tray):when resize icon window, it is necessary
|
|||
|
|
to consider the impact of the scale factor.The correct resize height is the
|
|||
|
|
height of the container multiplied by the scale factor of the container.
|
|||
|
|
MIME-Version: 1.0
|
|||
|
|
Content-Type: text/plain; charset=UTF-8
|
|||
|
|
Content-Transfer-Encoding: 8bit
|
|||
|
|
|
|||
|
|
- 在resize icon window时,需要考虑缩放率的影响,正确的resize高度为容器的高乘以容器的缩放率
|
|||
|
|
|
|||
|
|
Close #30889
|
|||
|
|
---
|
|||
|
|
src/tray/kiran-tray.c | 10 +++++++---
|
|||
|
|
1 file changed, 7 insertions(+), 3 deletions(-)
|
|||
|
|
|
|||
|
|
diff --git a/src/tray/kiran-tray.c b/src/tray/kiran-tray.c
|
|||
|
|
index 9744ccc..fc361d8 100644
|
|||
|
|
--- a/src/tray/kiran-tray.c
|
|||
|
|
+++ b/src/tray/kiran-tray.c
|
|||
|
|
@@ -1049,15 +1049,19 @@ void kiran_tray_resize_x11_icon_window(GdkDisplay *display,Window icon_window,Gt
|
|||
|
|
|
|||
|
|
GtkAllocation icon_allocation;
|
|||
|
|
gtk_widget_get_allocation(widget, &icon_allocation);
|
|||
|
|
- g_debug("icon container allocation height:%d",icon_allocation.height);
|
|||
|
|
+ int scale = gtk_widget_get_scale_factor(widget);
|
|||
|
|
+ g_debug("icon container allocation height:%d , scale:%d",icon_allocation.height, scale);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
+ * NOTE:
|
|||
|
|
* 这里只将window的高与图标容器的高保持一致,暂不限制window的宽 (#22117)
|
|||
|
|
+ * 匹配window的高和容器的高时,需要考虑缩放率的影响。
|
|||
|
|
+ * 例如缩放率设置为200%,在X协议层会对icon window的高度进行缩放 ,但是icon container容器高度没有变化
|
|||
|
|
*/
|
|||
|
|
- if(window_attributes.height != icon_allocation.height)
|
|||
|
|
+ if(window_attributes.height != (icon_allocation.height * scale))
|
|||
|
|
{
|
|||
|
|
g_debug("resize X window");
|
|||
|
|
- XResizeWindow(GDK_DISPLAY_XDISPLAY(display),icon_window,window_attributes.width,icon_allocation.height);
|
|||
|
|
+ XResizeWindow(GDK_DISPLAY_XDISPLAY(display),icon_window,window_attributes.width,icon_allocation.height * scale);
|
|||
|
|
XFlush(GDK_DISPLAY_XDISPLAY(display));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
--
|
|||
|
|
2.27.0
|
|||
|
|
|