Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mica is broken when switching light/dark theme #52

Closed
maicol07 opened this issue Apr 21, 2022 · 19 comments
Closed

Mica is broken when switching light/dark theme #52

maicol07 opened this issue Apr 21, 2022 · 19 comments

Comments

@maicol07
Copy link

Mica keeps being light, while I've switched to dark theme. Restarting firefox applies the new theme, but when switching back to light Mica keeps being dark.

Example recording:
https://user-images.githubusercontent.com/9463142/164411021-6c01c808-e77a-4f65-b40b-f8c8bcdf615a.mp4

@Guerra24
Copy link
Owner

Mica material is applied externally, Firefox does not call any of the apis that activate it or decide what theme to use. If you want to change it while it is open do it through MicaForEveryone.

image

@maicol07
Copy link
Author

Oh, yes you're right, I've missed that options (was set to Default). Switching that together with the Firefox theme works great!

Thank you.

Closing...

@maicol07
Copy link
Author

@Guerra24 I have to reopen this since there is an unfixed issue. When the theme changes and firefox is closed, the next reopening is still the previous Mica theme.
See this issue for more details: MicaForEveryone/MicaForEveryone#64

@maicol07 maicol07 reopened this Apr 25, 2022
@Guerra24
Copy link
Owner

When the theme changes and firefox is closed, the next reopening is still the previous Mica theme.

2022-04-25_21-02-20.mp4

Works here. MFE's Firefox rule is set to System.

@maicol07
Copy link
Author

maicol07 commented Apr 28, 2022

🤔 I already have the same rule but the issue persists...

@dongle-the-gadget
Copy link

dongle-the-gadget commented Apr 29, 2022

@Guerra24 I can also reproduce the issue, however not in the order that you shown in the video, maybe do in this order instead:

  1. Open Firefox. Confirm that the correct theme (dark/light) is rendered.
  2. Close Firefox.
  3. Change the theme
  4. Reopen Firefox. Confirm that it renders the wrong theme.

In your video, you changed the theme before closing Firefox, which doesn't seem to trigger this bug.

EDIT: Reproducing video

Firefox-MFE-System.mp4

@Guerra24
Copy link
Owner

Well, that's acrylic... afaik it does not have theme-specific colors. Also since I'm running stable Win11 I have not tested any of the other backdrop types. Regardless, I tried and still works just fine.

explorer_2022-04-29_19-21-17.mp4

That aside this is something I can't fix from my side unfortunately.

@dongle-the-gadget
Copy link

The same happens with Mica actually (sorry for the horrible video btw). And also looks like we are running dev builds while you are running stable. I generally think this is a bug related to Firefox, since this behavior doesn't shown on any other apps, only Firefox.

Firefox-MFE-System32.mp4

.

@Guerra24
Copy link
Owner

Closing this since the issue is unfixable from my side.

@maicol07
Copy link
Author

maicol07 commented Jun 4, 2022

I've found a workaround for this issue: I've written an AutoHotKey script that automatically triggers reload when theme has changed and Firefox window is active (or is opened):
https://github.com/maicol07/AHK-scripts/blob/main/FixFirefoxMFE.ahk

Feel free to improve the script if you want!

@Guerra24
Copy link
Owner

Just upgraded to 22621 and so far no issues on my side in both stable and nightly.

@dongle-the-gadget
Copy link

Strange, it still happens on my machine (25140). It looks like Firefox is automatically changing DWMWA_USE_IMMSERIVE_DARK_MODE, because when I delay execution of DwmSetWindowAttribute, everything works perfectly.

@dongle-the-gadget
Copy link

dongle-the-gadget commented Jun 19, 2022

After some Google digging, this problem is most likely caused by Firefox.
https://bugzilla.mozilla.org/show_bug.cgi?id=1734359
https://hg.mozilla.org/integration/autoland/rev/b94153cca1f7

EDIT: The title bar bug happens even without MFE, or any other program messing with Firefox's immersive dark mode attributes. So, it's definitely a Firefox bug.

EDIT 2: Firefox uses a function within the LookAndFeel class in order to determine whether it should use dark mode for the title bars. In the LookAndFeel.h file, the function returns the value of a field. Haven't managed to find out where the field is set though, nor the source file of the LookAndFeel class (commonly it would be LookAndFeel.cpp, but the file is missing).

EDIT 3: Looks like this function is to blame: https://github.com/mozilla/gecko-dev/blob/master/widget/LookAndFeel.h#L391.

@Guerra24
Copy link
Owner

Btw are you all sure Titlebar color is set to System in MFE? I can replicate the issue when set to Default but with System it does work just fine.

2022-06-19_01-27-42.mp4

@dongle-the-gadget
Copy link

Btw are you all sure Titlebar color is set to System in MFE? I can replicate the issue when set to Default but with System it does work just fine.

Yes. And as I said before, it does not matter whether MFE is used or not. This is a bug within Firefox, not MFE or this theme.

@dongle-the-gadget
Copy link

Whether MFE works or not in this case is pretty much a hit or miss. Some systems have Firefox applying dark theme before MFE and doesn't cause this bug; while others have MFE applying dark theme first, leading to this bug.

@dongle-the-gadget
Copy link

dongle-the-gadget commented Jun 19, 2022

On my system, Firefox takes like 3 seconds to initialize, while MFE only needs like 1 for applying the title bar color to Firefox. Yours looks pretty much instant.

@Guerra24
Copy link
Owner

Okay, so this is the issue. Firefox theme detection is somehow off by one and since it's a bug in Firefox it can be reported through bugzilla and it should be valid since the issue is visible when the titlebar is enabled. I can do it but I'm not sure when, if you want to do it just let me know otherwise some time next week I will.

@dongle-the-gadget
Copy link

You can go ahead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants