winecfg: Keep metrics in DPI-relative format when saving the theme.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
5f494bfeb4
commit
5b8fdb9731
|
@ -1011,35 +1011,42 @@ static void read_sysparams(HWND hDlg)
|
||||||
|
|
||||||
static void apply_sysparams(void)
|
static void apply_sysparams(void)
|
||||||
{
|
{
|
||||||
NONCLIENTMETRICSW nonclient_metrics;
|
NONCLIENTMETRICSW ncm;
|
||||||
int i, cnt = 0;
|
int i, cnt = 0;
|
||||||
int colors_idx[sizeof(metrics) / sizeof(metrics[0])];
|
int colors_idx[sizeof(metrics) / sizeof(metrics[0])];
|
||||||
COLORREF colors[sizeof(metrics) / sizeof(metrics[0])];
|
COLORREF colors[sizeof(metrics) / sizeof(metrics[0])];
|
||||||
|
HDC hdc;
|
||||||
|
int dpi;
|
||||||
|
|
||||||
nonclient_metrics.cbSize = sizeof(nonclient_metrics);
|
hdc = GetDC( 0 );
|
||||||
SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, sizeof(nonclient_metrics), &nonclient_metrics, 0);
|
dpi = GetDeviceCaps( hdc, LOGPIXELSY );
|
||||||
|
ReleaseDC( 0, hdc );
|
||||||
|
|
||||||
nonclient_metrics.iMenuWidth = nonclient_metrics.iMenuHeight =
|
ncm.cbSize = sizeof(ncm);
|
||||||
metrics[IDC_SYSPARAMS_MENU - IDC_SYSPARAMS_BUTTON].size;
|
SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, 0);
|
||||||
nonclient_metrics.iCaptionWidth = nonclient_metrics.iCaptionHeight =
|
|
||||||
metrics[IDC_SYSPARAMS_ACTIVE_TITLE - IDC_SYSPARAMS_BUTTON].size;
|
|
||||||
nonclient_metrics.iScrollWidth = nonclient_metrics.iScrollHeight =
|
|
||||||
metrics[IDC_SYSPARAMS_SCROLLBAR - IDC_SYSPARAMS_BUTTON].size;
|
|
||||||
|
|
||||||
memcpy(&(nonclient_metrics.lfMenuFont),
|
/* convert metrics back to twips */
|
||||||
&(metrics[IDC_SYSPARAMS_MENU_TEXT - IDC_SYSPARAMS_BUTTON].lf),
|
ncm.iMenuWidth = ncm.iMenuHeight =
|
||||||
sizeof(LOGFONTW));
|
MulDiv( metrics[IDC_SYSPARAMS_MENU - IDC_SYSPARAMS_BUTTON].size, -1440, dpi );
|
||||||
memcpy(&(nonclient_metrics.lfCaptionFont),
|
ncm.iCaptionWidth = ncm.iCaptionHeight =
|
||||||
&(metrics[IDC_SYSPARAMS_ACTIVE_TITLE_TEXT - IDC_SYSPARAMS_BUTTON].lf),
|
MulDiv( metrics[IDC_SYSPARAMS_ACTIVE_TITLE - IDC_SYSPARAMS_BUTTON].size, -1440, dpi );
|
||||||
sizeof(LOGFONTW));
|
ncm.iScrollWidth = ncm.iScrollHeight =
|
||||||
memcpy(&(nonclient_metrics.lfStatusFont),
|
MulDiv( metrics[IDC_SYSPARAMS_SCROLLBAR - IDC_SYSPARAMS_BUTTON].size, -1440, dpi );
|
||||||
&(metrics[IDC_SYSPARAMS_TOOLTIP_TEXT - IDC_SYSPARAMS_BUTTON].lf),
|
ncm.iSmCaptionWidth = MulDiv( ncm.iSmCaptionWidth, -1440, dpi );
|
||||||
sizeof(LOGFONTW));
|
ncm.iSmCaptionHeight = MulDiv( ncm.iSmCaptionHeight, -1440, dpi );
|
||||||
memcpy(&(nonclient_metrics.lfMessageFont),
|
|
||||||
&(metrics[IDC_SYSPARAMS_MSGBOX_TEXT - IDC_SYSPARAMS_BUTTON].lf),
|
|
||||||
sizeof(LOGFONTW));
|
|
||||||
|
|
||||||
SystemParametersInfoW(SPI_SETNONCLIENTMETRICS, sizeof(nonclient_metrics), &nonclient_metrics,
|
ncm.lfMenuFont = metrics[IDC_SYSPARAMS_MENU_TEXT - IDC_SYSPARAMS_BUTTON].lf;
|
||||||
|
ncm.lfCaptionFont = metrics[IDC_SYSPARAMS_ACTIVE_TITLE_TEXT - IDC_SYSPARAMS_BUTTON].lf;
|
||||||
|
ncm.lfStatusFont = metrics[IDC_SYSPARAMS_TOOLTIP_TEXT - IDC_SYSPARAMS_BUTTON].lf;
|
||||||
|
ncm.lfMessageFont = metrics[IDC_SYSPARAMS_MSGBOX_TEXT - IDC_SYSPARAMS_BUTTON].lf;
|
||||||
|
|
||||||
|
ncm.lfMenuFont.lfHeight = MulDiv( ncm.lfMenuFont.lfHeight, -72, dpi );
|
||||||
|
ncm.lfCaptionFont.lfHeight = MulDiv( ncm.lfCaptionFont.lfHeight, -72, dpi );
|
||||||
|
ncm.lfStatusFont.lfHeight = MulDiv( ncm.lfStatusFont.lfHeight, -72, dpi );
|
||||||
|
ncm.lfMessageFont.lfHeight = MulDiv( ncm.lfMessageFont.lfHeight, -72, dpi );
|
||||||
|
ncm.lfSmCaptionFont.lfHeight = MulDiv( ncm.lfSmCaptionFont.lfHeight, -72, dpi );
|
||||||
|
|
||||||
|
SystemParametersInfoW(SPI_SETNONCLIENTMETRICS, sizeof(ncm), &ncm,
|
||||||
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
|
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
|
||||||
|
|
||||||
for (i = 0; i < sizeof(metrics) / sizeof(metrics[0]); i++)
|
for (i = 0; i < sizeof(metrics) / sizeof(metrics[0]); i++)
|
||||||
|
|
Loading…
Reference in New Issue