This is what it looks like:
![Screenshot_20230310_015941](/uploads/99b3d279bcddbd40212808a045444a7b/Screenshot_20230310_015941.png)
-- v7: winecfg: Add an option to enable WinRT app dark theme.
From: Mohamad Al-Jaf mohamadaljaf@gmail.com
--- loader/wine.inf.in | 1 + 1 file changed, 1 insertion(+)
diff --git a/loader/wine.inf.in b/loader/wine.inf.in index 1f5138051c9..e6ca74ef043 100644 --- a/loader/wine.inf.in +++ b/loader/wine.inf.in @@ -2363,6 +2363,7 @@ StartType=3 ErrorControl=1
[ThemeManager] +HKCU,"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize","AppsUseLightTheme",0x10003,0x00000001 HKCU,"Software\Microsoft\Windows\CurrentVersion\ThemeManager","ThemeActive",2,"1" HKCU,"Software\Microsoft\Windows\CurrentVersion\ThemeManager","DllName",2,"%10%\resources\themes\light\light.msstyles" HKCU,"Software\Microsoft\Windows\CurrentVersion\ThemeManager","ColorName",2,"Blue"
From: Mohamad Al-Jaf mohamadaljaf@gmail.com
--- dlls/windows.ui/tests/uisettings.c | 4 ++-- programs/winecfg/resource.h | 27 ++++++++++++++------------- programs/winecfg/theme.c | 29 +++++++++++++++++++++++++++-- programs/winecfg/winecfg.rc | 8 +++++--- 4 files changed, 48 insertions(+), 20 deletions(-)
diff --git a/dlls/windows.ui/tests/uisettings.c b/dlls/windows.ui/tests/uisettings.c index bd1e7a02d20..9711d93d051 100644 --- a/dlls/windows.ui/tests/uisettings.c +++ b/dlls/windows.ui/tests/uisettings.c @@ -152,14 +152,14 @@ static void test_UISettings(void) type = UIColorType_Foreground; hr = IUISettings3_GetColorValue( uisettings3, type, &value ); ok( hr == S_OK, "GetColorValue returned %#lx\n", hr ); - todo_wine ok( value.A == 255 && value.R == 255 && value.G == 255 && value.B == 255, + ok( value.A == 255 && value.R == 255 && value.G == 255 && value.B == 255, "got unexpected value.A == %d value.R == %d value.G == %d value.B == %d\n", value.A, value.R, value.G, value.B );
reset_color( &value ); type = UIColorType_Background; hr = IUISettings3_GetColorValue( uisettings3, type, &value ); ok( hr == S_OK, "GetColorValue returned %#lx\n", hr ); - todo_wine ok( value.A == 255 && value.R == 0 && value.G == 0 && value.B == 0, + ok( value.A == 255 && value.R == 0 && value.G == 0 && value.B == 0, "got unexpected value.A == %d value.R == %d value.G == %d value.B == %d\n", value.A, value.R, value.G, value.B );
done: diff --git a/programs/winecfg/resource.h b/programs/winecfg/resource.h index dd46bc71b40..8d7ff909bf6 100644 --- a/programs/winecfg/resource.h +++ b/programs/winecfg/resource.h @@ -163,19 +163,20 @@ #define IDC_THEME_SIZECOMBO 1403 #define IDC_THEME_SIZETEXT 1404 #define IDC_THEME_THEMECOMBO 1405 -#define IDC_THEME_INSTALL 1406 -#define IDC_LIST_SFPATHS 1407 -#define IDC_LINK_SFPATH 1408 -#define IDC_EDIT_SFPATH 1409 -#define IDC_BROWSE_SFPATH 1410 -#define IDC_SYSPARAM_COMBO 1411 -#define IDC_SYSPARAM_SIZE_TEXT 1412 -#define IDC_SYSPARAM_SIZE 1413 -#define IDC_SYSPARAM_SIZE_UD 1414 -#define IDC_SYSPARAM_COLOR_TEXT 1415 -#define IDC_SYSPARAM_COLOR 1416 -#define IDC_SYSPARAM_FONT 1417 -#define IDC_ENABLE_FILE_ASSOCIATIONS 1418 +#define IDC_THEME_APPCOMBO 1406 +#define IDC_THEME_INSTALL 1407 +#define IDC_LIST_SFPATHS 1408 +#define IDC_LINK_SFPATH 1409 +#define IDC_EDIT_SFPATH 1410 +#define IDC_BROWSE_SFPATH 1411 +#define IDC_SYSPARAM_COMBO 1412 +#define IDC_SYSPARAM_SIZE_TEXT 1413 +#define IDC_SYSPARAM_SIZE 1414 +#define IDC_SYSPARAM_SIZE_UD 1415 +#define IDC_SYSPARAM_COLOR_TEXT 1416 +#define IDC_SYSPARAM_COLOR 1417 +#define IDC_SYSPARAM_FONT 1418 +#define IDC_ENABLE_FILE_ASSOCIATIONS 1419
#define IDC_SYSPARAMS_BUTTON 8400 #define IDC_SYSPARAMS_BUTTON_TEXT 8401 diff --git a/programs/winecfg/theme.c b/programs/winecfg/theme.c index bbc4d3cc11f..30c6d4ea696 100644 --- a/programs/winecfg/theme.c +++ b/programs/winecfg/theme.c @@ -421,6 +421,24 @@ static void enable_size_and_color_controls (HWND dialog, BOOL enable)
static void init_dialog (HWND dialog) { + WCHAR *value = get_reg_key(HKEY_CURRENT_USER, L"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", + L"AppsUseLightTheme", L"\0001"); + int apps_use_light_theme = (!wcscmp(value, L"")) ? 0 : 1; + static const struct + { + DWORD value; + const WCHAR *desc; + } + app_themes[] = + { + { 1, L"Light" }, + { 0, L"Dark" }, + }; + + SendDlgItemMessageW(dialog, IDC_THEME_APPCOMBO, CB_RESETCONTENT, 0, 0); + SendDlgItemMessageW(dialog, IDC_THEME_APPCOMBO, CB_ADDSTRING, 0, (LPARAM)app_themes[0].desc); + SendDlgItemMessageW(dialog, IDC_THEME_APPCOMBO, CB_ADDSTRING, 0, (LPARAM)app_themes[1].desc); + SendDlgItemMessageW(dialog, IDC_THEME_APPCOMBO, CB_SETCURSEL, app_themes[apps_use_light_theme].value, 0); SendDlgItemMessageW(dialog, IDC_SYSPARAM_SIZE_UD, UDM_SETBUDDY, (WPARAM)GetDlgItem(dialog, IDC_SYSPARAM_SIZE), 0); } @@ -450,8 +468,9 @@ static void update_dialog (HWND dialog) }
static void on_theme_changed(HWND dialog) { - int index = SendMessageW (GetDlgItem (dialog, IDC_THEME_THEMECOMBO), - CB_GETCURSEL, 0, 0); + int index; + + index = SendMessageW (GetDlgItem (dialog, IDC_THEME_THEMECOMBO), CB_GETCURSEL, 0, 0); if (!update_color_and_size (index, GetDlgItem (dialog, IDC_THEME_COLORCOMBO), GetDlgItem (dialog, IDC_THEME_SIZECOMBO))) { @@ -463,6 +482,11 @@ static void on_theme_changed(HWND dialog) { { enable_size_and_color_controls (dialog, TRUE); } + + index = SendMessageW (GetDlgItem (dialog, IDC_THEME_APPCOMBO), CB_GETCURSEL, 0, 0); + set_reg_key_dword(HKEY_CURRENT_USER, L"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", + L"AppsUseLightTheme", !index); + theme_dirty = TRUE; }
@@ -1148,6 +1172,7 @@ ThemeDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) if (updating_ui) break; switch (LOWORD(wParam)) { + case IDC_THEME_APPCOMBO: /* fall through */ case IDC_THEME_THEMECOMBO: on_theme_changed(hDlg); break; case IDC_THEME_COLORCOMBO: /* fall through */ case IDC_THEME_SIZECOMBO: theme_dirty = TRUE; break; diff --git a/programs/winecfg/winecfg.rc b/programs/winecfg/winecfg.rc index 8775b3b691b..36390554c9d 100644 --- a/programs/winecfg/winecfg.rc +++ b/programs/winecfg/winecfg.rc @@ -283,9 +283,11 @@ STYLE WS_CHILD | WS_DISABLED FONT 8, "MS Shell Dlg" BEGIN GROUPBOX "Appearance",IDC_STATIC,8,4,244,90 - LTEXT "&Theme:",IDC_STATIC,15,15,130,8 - COMBOBOX IDC_THEME_THEMECOMBO,15,25,130,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Install theme...",IDC_THEME_INSTALL,152,25,93,13 + LTEXT "&Theme:",IDC_STATIC,15,15,70,8 + COMBOBOX IDC_THEME_THEMECOMBO,15,25,70,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "&WinRT app theme:",IDC_STATIC,90,15,70,8 + COMBOBOX IDC_THEME_APPCOMBO,90,25,70,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "&Install theme...",IDC_THEME_INSTALL,165,25,80,13 LTEXT "&Color:",IDC_THEME_COLORTEXT,15,40,105,8 COMBOBOX IDC_THEME_COLORCOMBO,15,50,105,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "&Size:",IDC_THEME_SIZETEXT,126,40,120,8
Minor formatting change, no code changes. Also added an up-to-date screenshot.