@@ -353,18 +353,39 @@ VOID PhInitializeThemeWindowFrame(
353
353
_In_ HWND WindowHandle
354
354
)
355
355
{
356
+ #define DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1 19
357
+ #ifndef DWMWA_USE_IMMERSIVE_DARK_MODE
358
+ #define DWMWA_USE_IMMERSIVE_DARK_MODE 20
359
+ #endif
360
+
356
361
if (WindowsVersion >= WINDOWS_10_RS5 && DwmSetWindowAttribute_I )
357
362
{
358
363
switch (PhpThemeColorMode )
359
364
{
360
365
case 0 : // New colors
361
- DwmSetWindowAttribute_I (WindowHandle , 0x13 , & (BOOL ){ FALSE }, sizeof (BOOL ));
366
+ {
367
+ if (FAILED (DwmSetWindowAttribute_I (WindowHandle , DWMWA_USE_IMMERSIVE_DARK_MODE , & (BOOL ){ FALSE }, sizeof (BOOL ))))
368
+ {
369
+ DwmSetWindowAttribute_I (WindowHandle , DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1 , & (BOOL ){ FALSE }, sizeof (BOOL ));
370
+ }
371
+ }
362
372
break ;
363
373
case 1 : // Old colors
364
- DwmSetWindowAttribute_I (WindowHandle , 0x13 , & (BOOL ){ TRUE }, sizeof (BOOL ));
374
+ {
375
+ if (FAILED (DwmSetWindowAttribute_I (WindowHandle , DWMWA_USE_IMMERSIVE_DARK_MODE , & (BOOL ){ TRUE }, sizeof (BOOL ))))
376
+ {
377
+ DwmSetWindowAttribute_I (WindowHandle , DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1 , & (BOOL ){ TRUE }, sizeof (BOOL ));
378
+ }
379
+ }
365
380
break ;
366
381
}
367
382
}
383
+
384
+ //WINDOWCOMPOSITIONATTRIBDATA data;
385
+ //data.Attrib = WCA_USEDARKMODECOLORS;
386
+ //data.pvData = &(BOOL){ TRUE };
387
+ //data.cbData = sizeof(BOOL);
388
+ //SetWindowCompositionAttribute(WindowHandle, &data);
368
389
}
369
390
370
391
VOID PhInitializeThemeWindowHeader (
@@ -478,26 +499,26 @@ BOOLEAN CALLBACK PhpThemeWindowEnumChildWindows(
478
499
{
479
500
PhInitializeWindowTheme (WindowHandle , TRUE);
480
501
}
481
- else if (PhEqualStringZ (windowClassName , L"Button" , FALSE))
502
+ else if (PhEqualStringZ (windowClassName , WC_BUTTON , FALSE))
482
503
{
483
504
if ((PhGetWindowStyle (WindowHandle ) & BS_GROUPBOX ) == BS_GROUPBOX )
484
505
{
485
506
PhInitializeThemeWindowGroupBox (WindowHandle );
486
507
}
487
508
}
488
- else if (PhEqualStringZ (windowClassName , L"SysTabControl32" , FALSE))
509
+ else if (PhEqualStringZ (windowClassName , WC_TABCONTROL , FALSE))
489
510
{
490
511
PhInitializeThemeWindowTabControl (WindowHandle );
491
512
}
492
- else if (PhEqualStringZ (windowClassName , L"msctls_statusbar32" , FALSE))
513
+ else if (PhEqualStringZ (windowClassName , STATUSCLASSNAME , FALSE))
493
514
{
494
515
PhInitializeWindowThemeStatusBar (WindowHandle );
495
516
}
496
- else if (PhEqualStringZ (windowClassName , L"Edit" , TRUE))
517
+ else if (PhEqualStringZ (windowClassName , WC_EDIT , TRUE))
497
518
{
498
519
PhInitializeThemeWindowEditControl (WindowHandle );
499
520
}
500
- else if (PhEqualStringZ (windowClassName , L"ScrollBar" , FALSE))
521
+ else if (PhEqualStringZ (windowClassName , WC_SCROLLBAR , FALSE))
501
522
{
502
523
if (WindowsVersion >= WINDOWS_10_RS5 )
503
524
{
@@ -512,21 +533,25 @@ BOOLEAN CALLBACK PhpThemeWindowEnumChildWindows(
512
533
}
513
534
}
514
535
}
515
- else if (PhEqualStringZ (windowClassName , L"SysHeader32" , TRUE))
536
+ else if (PhEqualStringZ (windowClassName , WC_HEADER , TRUE))
516
537
{
517
538
PhInitializeThemeWindowHeader (WindowHandle );
518
539
}
519
- else if (PhEqualStringZ (windowClassName , L"SysListView32" , FALSE))
540
+ else if (PhEqualStringZ (windowClassName , WC_LISTVIEW , FALSE))
520
541
{
521
542
if (WindowsVersion >= WINDOWS_10_RS5 )
522
543
{
544
+ HWND tooltipWindow = ListView_GetToolTips (WindowHandle );
545
+
523
546
switch (PhpThemeColorMode )
524
547
{
525
548
case 0 : // New colors
526
549
PhSetControlTheme (WindowHandle , L"explorer" );
550
+ PhSetControlTheme (tooltipWindow , L"" );
527
551
break ;
528
552
case 1 : // Old colors
529
553
PhSetControlTheme (WindowHandle , L"DarkMode_Explorer" );
554
+ PhSetControlTheme (tooltipWindow , L"DarkMode_Explorer" );
530
555
break ;
531
556
}
532
557
}
@@ -560,8 +585,23 @@ BOOLEAN CALLBACK PhpThemeWindowEnumChildWindows(
560
585
561
586
//InvalidateRect(WindowHandle, NULL, FALSE);
562
587
}
563
- else if (PhEqualStringZ (windowClassName , L"SysTreeView32" , FALSE))
588
+ else if (PhEqualStringZ (windowClassName , WC_TREEVIEW , FALSE))
564
589
{
590
+ if (WindowsVersion >= WINDOWS_10_RS5 )
591
+ {
592
+ HWND tooltipWindow = TreeView_GetToolTips (WindowHandle );
593
+
594
+ switch (PhpThemeColorMode )
595
+ {
596
+ case 0 : // New colors
597
+ PhSetControlTheme (tooltipWindow , L"" );
598
+ break ;
599
+ case 1 : // Old colors
600
+ PhSetControlTheme (tooltipWindow , L"DarkMode_Explorer" );
601
+ break ;
602
+ }
603
+ }
604
+
565
605
switch (PhpThemeColorMode )
566
606
{
567
607
case 0 : // New colors
@@ -599,6 +639,21 @@ BOOLEAN CALLBACK PhpThemeWindowEnumChildWindows(
599
639
}
600
640
else if (PhEqualStringZ (windowClassName , L"PhTreeNew" , FALSE))
601
641
{
642
+ if (WindowsVersion >= WINDOWS_10_RS5 )
643
+ {
644
+ HWND tooltipWindow = TreeNew_GetTooltips (WindowHandle );
645
+
646
+ switch (PhpThemeColorMode )
647
+ {
648
+ case 0 : // New colors
649
+ PhSetControlTheme (tooltipWindow , L"" );
650
+ break ;
651
+ case 1 : // Old colors
652
+ PhSetControlTheme (tooltipWindow , L"DarkMode_Explorer" );
653
+ break ;
654
+ }
655
+ }
656
+
602
657
if (PhpThemeBorderEnable )
603
658
PhSetWindowExStyle (WindowHandle , WS_EX_CLIENTEDGE , WS_EX_CLIENTEDGE );
604
659
else
@@ -641,7 +696,7 @@ BOOLEAN CALLBACK PhpReInitializeThemeWindowEnumChildWindows(
641
696
642
697
//dprintf("PhpReInitializeThemeWindowEnumChildWindows: %S\r\n", windowClassName);
643
698
644
- if (PhEqualStringZ (windowClassName , L"SysListView32" , FALSE))
699
+ if (PhEqualStringZ (windowClassName , WC_LISTVIEW , FALSE))
645
700
{
646
701
if (WindowsVersion >= WINDOWS_10_RS5 )
647
702
{
@@ -670,7 +725,7 @@ BOOLEAN CALLBACK PhpReInitializeThemeWindowEnumChildWindows(
670
725
break ;
671
726
}
672
727
}
673
- else if (PhEqualStringZ (windowClassName , L"ScrollBar" , FALSE))
728
+ else if (PhEqualStringZ (windowClassName , WC_SCROLLBAR , FALSE))
674
729
{
675
730
if (WindowsVersion >= WINDOWS_10_RS5 )
676
731
{
@@ -697,7 +752,7 @@ BOOLEAN CALLBACK PhpReInitializeThemeWindowEnumChildWindows(
697
752
break ;
698
753
}
699
754
}
700
- else if (PhEqualStringZ (windowClassName , L"Edit" , FALSE))
755
+ else if (PhEqualStringZ (windowClassName , WC_EDIT , FALSE))
701
756
{
702
757
SendMessage (WindowHandle , WM_THEMECHANGED , 0 , 0 ); // searchbox.c
703
758
}
0 commit comments