@@ -75,17 +75,10 @@ panel_struts_get_monitor_geometry (GdkScreen *screen,
7575 int * width ,
7676 int * height )
7777{
78- GdkDisplay * display ;
79- int scale ;
80-
81- /* Use scale factor to bring strut dimensions up to application pixels to support HiDPI displays */
82- display = gdk_screen_get_display (screen );
83- scale = gdk_monitor_get_scale_factor (gdk_display_get_monitor (display , monitor ));
84-
85- * x = panel_multiscreen_x (screen , monitor ) * scale ;
86- * y = panel_multiscreen_y (screen , monitor ) * scale ;
87- * width = panel_multiscreen_width (screen , monitor ) * scale ;
88- * height = panel_multiscreen_height (screen , monitor ) * scale ;
78+ * x = panel_multiscreen_x (screen , monitor );
79+ * y = panel_multiscreen_y (screen , monitor );
80+ * width = panel_multiscreen_width (screen , monitor );
81+ * height = panel_multiscreen_height (screen , monitor );
8982}
9083
9184static PanelStrut *
@@ -263,6 +256,7 @@ panel_struts_set_window_hint (PanelToplevel *toplevel)
263256 int monitor_x , monitor_y , monitor_width , monitor_height ;
264257 int screen_width , screen_height ;
265258 int leftmost , rightmost , topmost , bottommost ;
259+ int scale ;
266260
267261 widget = GTK_WIDGET (toplevel );
268262
@@ -274,10 +268,11 @@ panel_struts_set_window_hint (PanelToplevel *toplevel)
274268 return ;
275269 }
276270
271+ scale = gtk_widget_get_scale_factor (widget );
277272 strut_size = strut -> allocated_strut_size ;
278273
279- screen_width = WidthOfScreen (gdk_x11_screen_get_xscreen (strut -> screen ));
280- screen_height = HeightOfScreen (gdk_x11_screen_get_xscreen (strut -> screen ));
274+ screen_width = WidthOfScreen (gdk_x11_screen_get_xscreen (strut -> screen )) / scale ;
275+ screen_height = HeightOfScreen (gdk_x11_screen_get_xscreen (strut -> screen )) / scale ;
281276
282277 panel_struts_get_monitor_geometry (strut -> screen ,
283278 strut -> monitor ,
@@ -322,8 +317,8 @@ panel_struts_set_window_hint (PanelToplevel *toplevel)
322317 panel_xutils_set_strut (gtk_widget_get_window (widget ),
323318 strut -> orientation ,
324319 strut_size ,
325- strut -> allocated_strut_start ,
326- strut -> allocated_strut_end );
320+ strut -> allocated_strut_start * scale ,
321+ strut -> allocated_strut_end * scale );
327322}
328323
329324void
@@ -449,24 +444,32 @@ panel_struts_register_strut (PanelToplevel *toplevel,
449444 strut -> geometry .y = monitor_y ;
450445 strut -> geometry .width = strut -> strut_end - strut -> strut_start + 1 ;
451446 strut -> geometry .height = strut -> strut_size / scale ;
447+ if (scale > 1 )
448+ strut -> geometry .width -= (strut -> strut_size / scale );
452449 break ;
453450 case PANEL_ORIENTATION_BOTTOM :
454451 strut -> geometry .x = strut -> strut_start ;
455452 strut -> geometry .y = monitor_y + monitor_height - strut -> strut_size ;
456453 strut -> geometry .width = strut -> strut_end - strut -> strut_start + 1 ;
457454 strut -> geometry .height = strut -> strut_size / scale ;
455+ if (scale > 1 )
456+ strut -> geometry .width -= (strut -> strut_size / scale );
458457 break ;
459458 case PANEL_ORIENTATION_LEFT :
460459 strut -> geometry .x = monitor_x ;
461460 strut -> geometry .y = strut -> strut_start ;
462461 strut -> geometry .width = strut -> strut_size / scale ;
463462 strut -> geometry .height = strut -> strut_end - strut -> strut_start + 1 ;
463+ if (scale > 1 )
464+ strut -> geometry .height -= (strut -> strut_size / scale );
464465 break ;
465466 case PANEL_ORIENTATION_RIGHT :
466467 strut -> geometry .x = monitor_x + monitor_width - strut -> strut_size ;
467468 strut -> geometry .y = strut -> strut_start ;
468469 strut -> geometry .width = strut -> strut_size / scale ;
469470 strut -> geometry .height = strut -> strut_end - strut -> strut_start + 1 ;
471+ if (scale > 1 )
472+ strut -> geometry .height -= (strut -> strut_size / scale );
470473 break ;
471474 }
472475
0 commit comments