Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
91e54e5f
Commit
91e54e5f
authored
Sep 26, 2023
by
Helix Graziani
Committed by
Alexandre Julliard
Oct 10, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
uxtheme: Add ShouldSystemUseDarkMode.
parent
26471dd0
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
51 additions
and
0 deletions
+51
-0
system.c
dlls/uxtheme/system.c
+17
-0
system.c
dlls/uxtheme/tests/system.c
+33
-0
uxtheme.spec
dlls/uxtheme/uxtheme.spec
+1
-0
No files found.
dlls/uxtheme/system.c
View file @
91e54e5f
...
...
@@ -1256,3 +1256,20 @@ BOOL WINAPI ThemeHooksRemove(void)
UnregisterUserApiHook
();
return
TRUE
;
}
/**********************************************************************
* ShouldSystemUseDarkMode (UXTHEME.138)
*
* RETURNS
* Whether or not the system should use dark mode.
*/
BOOL
WINAPI
ShouldSystemUseDarkMode
(
void
)
{
DWORD
light_theme
=
TRUE
,
light_theme_size
=
sizeof
(
light_theme
);
RegGetValueW
(
HKEY_CURRENT_USER
,
L"Software
\\
Microsoft
\\
Windows
\\
CurrentVersion
\\
Themes
\\
Personalize"
,
L"SystemUsesLightTheme"
,
RRF_RT_REG_DWORD
,
NULL
,
&
light_theme
,
&
light_theme_size
);
return
!
light_theme
;
}
dlls/uxtheme/tests/system.c
View file @
91e54e5f
...
...
@@ -48,6 +48,7 @@ static HDC (WINAPI *pGetBufferedPaintTargetDC)(HPAINTBUFFER);
static
HRESULT
(
WINAPI
*
pGetBufferedPaintTargetRect
)(
HPAINTBUFFER
,
RECT
*
);
static
HRESULT
(
WINAPI
*
pGetThemeIntList
)(
HTHEME
,
int
,
int
,
int
,
INTLIST
*
);
static
HRESULT
(
WINAPI
*
pGetThemeTransitionDuration
)(
HTHEME
,
int
,
int
,
int
,
int
,
DWORD
*
);
static
BOOL
(
WINAPI
*
pShouldSystemUseDarkMode
)(
void
);
static
LONG
(
WINAPI
*
pDisplayConfigGetDeviceInfo
)(
DISPLAYCONFIG_DEVICE_INFO_HEADER
*
);
static
LONG
(
WINAPI
*
pDisplayConfigSetDeviceInfo
)(
DISPLAYCONFIG_DEVICE_INFO_HEADER
*
);
...
...
@@ -74,6 +75,8 @@ static void init_funcs(void)
HMODULE
gdi32
=
GetModuleHandleA
(
"gdi32.dll"
);
HMODULE
uxtheme
=
GetModuleHandleA
(
"uxtheme.dll"
);
pShouldSystemUseDarkMode
=
(
void
*
)
GetProcAddress
(
uxtheme
,
MAKEINTRESOURCEA
(
138
));
#define GET_PROC(module, func) \
p##func = (void *)GetProcAddress(module, #func); \
if (!p##func) \
...
...
@@ -2597,6 +2600,35 @@ static void test_theme(void)
DestroyWindow
(
hwnd
);
}
static
void
test_ShouldSystemUseDarkMode
(
void
)
{
DWORD
light_theme
,
light_theme_size
=
sizeof
(
light_theme
),
last_error
;
BOOL
result
;
LSTATUS
ls
;
if
(
!
pShouldSystemUseDarkMode
)
{
win_skip
(
"ShouldSystemUseDarkMode() is unavailable.
\n
"
);
return
;
}
ls
=
RegGetValueW
(
HKEY_CURRENT_USER
,
L"Software
\\
Microsoft
\\
Windows
\\
CurrentVersion
\\
Themes
\\
Personalize"
,
L"SystemUsesLightTheme"
,
RRF_RT_REG_DWORD
,
NULL
,
&
light_theme
,
&
light_theme_size
);
if
(
ls
==
ERROR_FILE_NOT_FOUND
)
{
light_theme
=
1
;
ls
=
0
;
}
ok
(
ls
==
0
,
"RegGetValue failed: %ld.
\n
"
,
ls
);
SetLastError
(
0xdeadbeef
);
result
=
pShouldSystemUseDarkMode
();
last_error
=
GetLastError
();
ok
(
last_error
==
0xdeadbeef
,
"ShouldSystemUseDarkMode set last error: %ld.
\n
"
,
last_error
);
ok
(
result
==
!
light_theme
,
"Expected value %d, got %d.
\n
"
,
!
light_theme
,
result
);
}
START_TEST
(
system
)
{
ULONG_PTR
ctx_cookie
;
...
...
@@ -2622,6 +2654,7 @@ START_TEST(system)
test_DrawThemeBackgroundEx
();
test_GetThemeBackgroundRegion
();
test_theme
();
test_ShouldSystemUseDarkMode
();
if
(
load_v6_module
(
&
ctx_cookie
,
&
ctx
))
{
...
...
dlls/uxtheme/uxtheme.spec
View file @
91e54e5f
...
...
@@ -42,6 +42,7 @@
61 stdcall OpenThemeDataEx(ptr wstr long)
62 stub -noname ServerClearStockObjects
63 stub -noname MarkSelection
138 stdcall -noname ShouldSystemUseDarkMode()
# Standard functions
@ stdcall BeginBufferedAnimation(ptr ptr ptr long ptr ptr ptr ptr)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment