Conversation
790880a to
d0a5c6f
Compare
|
Nice PR number for such a change, btw |
For Windows use |
|
|
Yes, it looks like this is really better. Good catch! |
| // wxWidgets' IsDark() returns false on Win 11 now even if dark mode is enabled | ||
| // so we need to additionally check the registry for the dark mode setting | ||
| m_isDarkMode = m_isDarkMode || IsWindowsInDarkMode(); | ||
| MSWEnableDarkMode(wxApp::DarkMode_Auto); |
There was a problem hiding this comment.
Are you sure this is needed? I do remember when I tested the dark mode, I didn't have this enabled
There was a problem hiding this comment.
Did it according to docs. Yes, without it just ignores OS settings
|
@AufarZakiev @AenBleidd Please make absolutely sure that all your changes are guarded by |
or |
|
@CharlieFenton, of course we will, no worries. This is too far from being finished, and it's too early to talk about this now, but this is definitely something I will keep in mind while doing a review of the code. |
6f72d16 to
83f4cf0
Compare
|
@AenBleidd , do you have a chance to review PR? |
|
I had no chance to test this on devices I have. |
|
@AufarZakiev, we have a progress bar that has a self-written function to draw itself. |
There was a problem hiding this comment.
Why are you changing all these colors? The contents of the graphs do not need to be changed for dark mode. In my opinion, it is wrong to change them. Furthermore, you have not guarded your changes by #ifdef _WIN32 or #ifdef __WXMSW__ to prevent creating problems for Mac and Linux. This file already had all the changes needed for dark mode. Here is how the light and dark mode appear on the Mac with the existing code:
There was a problem hiding this comment.
@CharlieFenton, maybe we still can change these colors to be less bright when in Dark mode?
Personally I think with this change they look (at least on Windows) way more consistent than on macOS:

There was a problem hiding this comment.
Thank you for the screenshot. Now that I've seen it, I feel even more certain that the changes in this PR are wrong. It looks terrible and it is very difficult to see the grid lines. You can do what you want on Windows, but please do not change the appearance on the Mac. The BOINC dark mode has been available on the Mac for quite some time, and people have been happy with it as is.
There was a problem hiding this comment.
It would be better to have the same look and feel on all platforms. Maybe we can adjust the intensity of the grid lines to make them more visible while keeping more dark background?
@davidpanderson, what do you think?
There was a problem hiding this comment.
You are making wholesale changes affecting all platforms, including Mac and Linux. This is unacceptable. You must take care not to change anything affecting the Mac by guarding your changes with #ifdef _WIN32 or #ifdef __WXMSW__
|
I agree that, in dark mode, the background of the graphs should be fairly dark |
|
I think it is worthwhile to take a step back and look at what Microsoft and Apple say about Dark Mode. This article from Microsoft says:
I've seen some websites say Reduce eyestrain rather than Easier on the eyes. I think that is primarily about reducing the glare that comes from black letters on a white background. It's pretty clear to me that Dark mode doesn't necessarily involve inverting all colors. If you scroll down a bit in this section of this microsoft article you can see that a color quite similar to our graph background is unchanged in dark mode. When I asked Google for Microsoft dark mode programming guidelines it replied:
and
Another important consideration I see mentioned in the above articles and various others is accessibility. Contrast among elements must be high enough to help people with impaired vision understand the display. That means the grid lines must be more prominent than the screenshot from this PR. I feel the pale blue background we have in Light Mode also works well in Dark Mode and allows the grid lines and data to be easily visible without causing eye strain or glare. I am willing to consider using the colors that we settle on for Windows in the statistics tab on the Mac if they are pleasing (aesthetic preference) and satisfy all the other considerations discussed above. But I feel the current proposal does not meet those criteria. Finally, please remember that BOINC has supported Dark Mode on the Mac since June 2023 and the current implementation has been very well received. |
That doesn't mean that it's perfect and cannot be made better ;)
True, but the color itself is a little bit more soft and darker in comparison with the color we have in BOINC Manager. But I do agree. I do not want to say that the set of colors in this PR is the final. This needs to be further discussed to find better colors for the next try. |
|
@CharlieFenton, some examples of graphics from GitHub I personally like: Again, need to be further discussed. |
|
One more example of nice graphs: https://grafana.kiska.pw/d/boinc/boinc?orgId=1&var-project=BOINC%20Central&from=now-24h&to=now |
|
FYI: need more time to deal with progress bars blinking. Still a mystery why it happens and only in the dark mode. |
This is only a wild guess, but might it be associated with your addition of the remainderColor, textColor, remainderBrush and / or remainderPen? This doesn't happen on the Mac, but as I wrote before:
You can test whether it blinks when using the generic list control by temporarily changing lines 25-29 in BOINCListCtrl.h. |
No, reverting these changes do not prevent blinking.
Generic list is not available in Win, I guess. At least, I cannot build project enabling it. |
|
WxWidgets' developers directly say that
So it is a little hacky from the very beginning. Now they are fixing numerous bugs in dark mode. For example, master branch already has a fix for proper selected row highlight. But our problem is deeper, since BOINC uses a little hacky "post-draw" method to draw progress bars. Using master branch of WxWidgets does not fix it Option 1. I can dig even deeper to find root cause in WxWidgets' dark mode implementation. After that, root cause maybe fixed either in WxWidgets or I will come up with another progress bars drawing method specifically for Win dark mode if it possible. I think, we should try Option 1. @AenBleidd , do you agree? |
|
@AufarZakiev, yeah, I agree. Option 1 is preferred. |
83f4cf0 to
9c93ae4
Compare
|
@AenBleidd , fix is finally there. I updated the initial PR message I asked for very comprehensive comments, they are really good. Here is a main problem description, it is also in the code itself. WxWidgets' Dark mode is a nightmareI personally do not like adding basically a legacy code (nobody will ever touch it, really). However, I see no other way till the UI is coupled to WxWidgets. |
|
I wonder is it too optimistic to research for a modern multi-platform UI ? For more web-like experience, as it is mentioned in roadmap. |
|
@AufarZakiev, thank you for the commit. I'll try to review it when I have time. |
|
@AufarZakiev Your changes to CBOINCListCtrl::DrawProgressBars() are modifying code that is used by Mac and Linux. This is absolutely unacceptable! I don't have the time to constantly review your code. Please do not let this happen again. |
@AufarZakiev I only looked at your changes long enough to find one instance of unguarded changes which may break Mac and Linux. Please make sure all your changes are guarded by #ifdef and affect only Wiindows. Never replace existing code. |
|
@AufarZakiev is trying to help. Let's be encouraging and constructive. |
|
@AufarZakiev One correction / clarification: please guard your code with |
9c93ae4 to
1f947b4
Compare
Hi @CharlieFenton, Thank you for your vigilance in protecting the Mac and Linux builds. I want to address your concerns directly Changes that are strictly Windows-onlyThe vast majority of this PR is guarded by platform checks and has zero effect on Mac or Linux:
Changes that do affect all platformsThere are a few small cross-platform changes I'd like to discuss openly: 1. Progress column header alignment changed from 2. Fixed a copy-paste bug: 3. Extracted theme initialization into an Question on Statistics graph colors (
|
|
I will also deeply appreciate your feedback on a new BOINC manager called Fresco. I developed it as an experiment and it is pretty good. There is an announcement: #6866 I want to express my admiration on how good manager and client are separated. It was a real pleasure to know how easy is to make a replacement for a manager without touching any of client's code. Magnificent! |
@AufarZakiev Thank you of the detailed response and for your commitment to exercising care not to break the Mac and Linux functionality. As you suggest, i will wait until you let us know your changes aer ready for review before doing anything further. But I do want to clarify that this comment was in response to your changes to While these do seem to preserve the progress bars' appearance on the Mac in light mode, they substantially change it in dark mode. I don't know what the standards are for dark mode on Windows, but on the Mac dark mode does not mean changing everything to shades of gray, as your changes did with the progress bars. I spent some time selecting a progress bar color for dark mode on the Mac and Linux and I prefer that not be changed on these platforms.
I don't have a strong feeling either way. On the one hand, you have made it consistent with the header for that column in the Projects and Transfers tabs; on the other hand, it is inconsistent (in all three tabs) with all the other headers which are either right justified or left justified. |
|
Yes, you are right, Ok, summary is:
Other changes are refactoring / bugfixes / Windows-only. Is it OK with you, @CharlieFenton ? |
Yes, I think so, but I will again review everything when you say you are ready for me to do that. Thank you. |
1f947b4 to
9043956
Compare
|
@CharlieFenton @AenBleidd you are welcome to review |


Fixes #5274
Description of the Change
centerto follow progress column alignment in other tabsTested on Win 11.
Technical implementation
Alternate Designs
Proper progress bars rendering requires to introduce hardly-maintainable code (see
DrawItemProgressBarmethod). To be honest, it is a legacy code from the moment of creation.Screenshots:
Release Notes
Add Dark Mode support for Windows
Update history