Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Use Windows high contrast black/white theme with MaterialApp themes #39206

Merged
merged 9 commits into from
Feb 1, 2023

Conversation

yaakovschectman
Copy link
Contributor

MaterialApp has a highContrastTheme and a highContrastDarkTheme. Currently, on windows, which of these to use is based on whether or not dark mode for apps is enabled. However, the app dark mode setting is independent of the high contrast theme, which may be black or white. Now, check the high contrast theme to determine which MaterialApp theme to use when high contrast mode is enabled.

flutter/flutter#75883

If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test-exempt. See testing the engine for instructions on writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

int times = 0;
TestBinaryMessenger messenger([&times](const std::string& channel,
const uint8_t* message, size_t message_size,
BinaryReply reply) { times++; });
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: consider asserting on the channel name since that's an easy spot check

Copy link
Member

@loic-sharma loic-sharma left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

int g = GetGValue(text_color);
int b = GetBValue(text_color);
int luminance = (r + r + r + b + (g << 2)) >> 3;
return luminance >= 0.5 ? SettingsPlugin::PlatformBrightness::kLight
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might be nice to extract this prologue to a GetLuminance static function like:

namespace {
int GetLuminance(DWORD color) {
  ...
}
}  // namespace

DWORD use_light_theme_size = sizeof(use_light_theme);
LONG result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey,
kGetPreferredBrightnessRegValue, RRF_RT_REG_DWORD,
nullptr, &use_light_theme, &use_light_theme_size);
Copy link
Member

@cbracken cbracken Jan 31, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similarly here, it might be useful to extract this to a named function with a short doc comment. Then you could inline this right into the condition bit of the ternary expression below.

Copy link
Member

@cbracken cbracken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm modulo minor nits.

LGTM stamp from a Japanese personal seal

engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 2, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Feb 2, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 2, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 2, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 2, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Feb 2, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 2, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Feb 2, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 2, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 2, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 2, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Feb 2, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Feb 2, 2023
@yaakovschectman yaakovschectman deleted the high_contrast_colors branch February 2, 2023 21:29
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Feb 3, 2023
auto-submit bot pushed a commit to flutter/plugins that referenced this pull request Feb 3, 2023
* 254a796 Revert "Reland "Add --serve-observatory flag to run, attach, and test (#118402)" (#119529)" (flutter/flutter#119729)

* 1573c12 Marks Mac_android microbenchmarks to be unflaky (flutter/flutter#119727)

* 5613ab0 remove unnecessary parens (flutter/flutter#119736)

* 1305a50 Roll Flutter Engine from c08a286d60e9 to ba3adb74d952 (5 revisions) (flutter/flutter#119741)

* 484d881 [conductor] update console link (flutter/flutter#118338)

* 73124dc Fix `ListTileThemeData.copyWith` doesn't override correct properties (flutter/flutter#119738)

* bc8927c 2b8dd4e5c Use Windows high contrast black/white theme with `MaterialApp` themes (flutter/engine#39206) (flutter/flutter#119747)

* 578edfc Catch errors thrown while handling pointer events (flutter/flutter#119577)

* 8fd5d4e Remove deprecated SystemNavigator.routeUpdated method (flutter/flutter#119187)

* 7a926dc Deprecate MediaQuery[Data].fromWindow (flutter/flutter#119647)

* cd118da Update a test expectation that depended on an SkParagraph fix (flutter/flutter#119756)

* 4ae2d3b 🔥 Do not format the messages file for `gen-l10n` (flutter/flutter#119596)

* 8f5949e Roll Flutter Engine from 2b8dd4e5c699 to a12d102773dd (2 revisions) (flutter/flutter#119758)

* 4c99da6 Avoid printing blank lines between "Another exception was thrown:" messages. (flutter/flutter#119587)

* 2ecf4ae Update the counter app to enable Material 3 (flutter/flutter#118835)

* 0b8486d 29d09845f Roll Dart SDK from b47964e5d575 to 1c219a91e637 (1 revision) (flutter/engine#39324) (flutter/flutter#119763)

* ca7b7e3 Roll Flutter Engine from 29d09845f21e to 97d27ff59459 (2 revisions) (flutter/flutter#119765)

* 475fc4a Run Mac hostonly tests on any available arch (flutter/flutter#119762)

* 322d10e 18118e10a Add iOS spring animation objc files (flutter/engine#38801) (flutter/flutter#119768)

* f767f86 check if directory exists before listing content (flutter/flutter#119748)

* 34730c7 Revert "Run Mac hostonly tests on any available arch (#119762)" (flutter/flutter#119784)

* f9daa9a Roll Flutter Engine from 18118e10a0a5 to 679c4b42e222 (4 revisions) (flutter/flutter#119783)

* fd76ef0 Reland "Add API for discovering assets" (flutter/flutter#119277)

* ca0596e Fix `pub get --unknown-flag` (flutter/flutter#119622)

* 9abb6d7 Roll Plugins from 9da327c to 9302d87 (11 revisions) (flutter/flutter#119825)

* 9eafbcc Roll Flutter Engine from 679c4b42e222 to 388890a98e5b (6 revisions) (flutter/flutter#119830)

* 1ee8799 Revert "[Re-land] Exposed tooltip longPress (#118796)" (flutter/flutter#119832)

* 07b51a0 Add missing variants and *new* indicators to `useMaterial3` docs (flutter/flutter#119799)

* 201380a e9e601c7c [web] Hide autofill overlay (flutter/engine#39294) (flutter/flutter#119833)

* 1c0065c 27f55219d Roll Fuchsia Linux SDK from QxkjqmRgowkk_n2NZ... to pWloCaRzjLEAUvQEz... (flutter/engine#39339) (flutter/flutter#119838)

* e7d934a Marks Linux_android android_choreographer_do_frame_test to be flaky (flutter/flutter#119721)

* 3f986e4 Roll Flutter Engine from 27f55219df79 to ae38c9585a61 (2 revisions) (flutter/flutter#119840)

* b0f1714 Make Flex,Row,Column const for real (flutter/flutter#119673)

* d4b6898 [web] Put all index.html operations in one place (flutter/flutter#118188)

* d63987f Parser machine logs (flutter/flutter#118707)

* 22bbdf0 Android defines target update (flutter/flutter#119766)

* 8387c23 [flutter_tools] Use base DAP detach and ensure correct output (flutter/flutter#119076)

* d820aec Manual pub roll with dwds fix (flutter/flutter#119575)

* 72f9cf5 Roll Flutter Engine from ae38c9585a61 to 616ecd8be3de (3 revisions) (flutter/flutter#119859)

* cfdc358 roll packages (flutter/flutter#119865)

* d875899 Bump test Chrome version for Mac arm support (flutter/flutter#119773)

* 9b86a48 Fix gets removedItem instead of its index (flutter/flutter#119638)

* 66b2ca6 Roll Flutter Engine from 616ecd8be3de to 2871970337df (3 revisions) (flutter/flutter#119870)

* c626460 Make `_focusDebug` not interpolate in debug mode (flutter/flutter#119680)

* a27802e flutter_tool: remove explicit length header in HTTP response (flutter/flutter#119869)

* 3570cce Remove deprecated kind in GestureRecognizer et al (flutter/flutter#119572)

* bc45b18 2696fff87 Roll Skia from c2d81db3ef41 to 4f0166baf5a4 (13 revisions) (flutter/engine#39348) (flutter/flutter#119879)

* f3effce Roll Flutter Engine from 2696fff8716d to e3fe6dade964 (3 revisions) (flutter/flutter#119892)

* 69421c1 [framework] use shader tiling instead of repeated calls to drawImage (flutter/flutter#119495)

* 6b83eff Roll Flutter Engine from e3fe6dade964 to 655530e3fd15 (5 revisions) (flutter/flutter#119905)

* a5d8a4a 67d35267c [Impeller] Use minimal coverage for stencil restores after overdraw prevention (flutter/engine#39358) (flutter/flutter#119910)

* fc8ea56 0fb48ce5b Roll Dart SDK from 69452c5012d9 to be795cc64bd7 (1 revision) (flutter/engine#39360) (flutter/flutter#119926)

* e0b2138 Dispose OverlayEntry in TooltipState. (flutter/flutter#117291)

* c5e8757 Add M3 support for iconbuttons in error state in TextFields (flutter/flutter#119925)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

3 participants