Qt uses a default font size of 13pt for QWidgets on macOS. By setting
the default font size to 10pt, text becomes too small for comfortable
use on macOS.
This PR patches the font files copied into the macOS bundle to use a
larger font-size of 12pt. It also sets the fallback font to the more
modern SF Display-based `.AppleSystemUIFont` used by default in macOS
if Open Sans is not found.
The toggleControlLayoutAction (change between horizontal and vertical
display mode) deletes and re-recreates the volume controls, meaning we
were writing to freed memory. This is a kind of hacky fix but it's the
only action we need to be concerned with for now.
The removeIconSmall is now also a trash icon, so we don't need a
separate (now duplicate) themeID for it anymore.
The icon itself of course needs to stay as it's still needed.
Qt translation strings use the full English string as an identifier,
rather than a standardised key. Meanwhile, .ini files aren't designed
for keys with spaces, so a translation string for "Restore Defaults"
won't match unless the ini line is
"Restore Defaults"="Defaults"
which is inconsistent, unpleasant and harder to read.
Setting a QStyle resets the color palette. This is unhelpful when a few
lines before that we set a new palette. In theory the setStyle call
could just be moved up, but we don't need to since we always set the
same style so there's no reason to call it multiple times.
If the user just reselects the theme they're already on, we shouldn't
set it again, as setting a theme always introduces issues (that are
especially visible on macOS and Linux).
Plugins are expected to be in the .plugin bundle format. We do not want
to encourage usage of the old .so format, this is only kept at all for
backwards compatibility with existing plugins.
This crash is suspected to be a QT bug that happens in 6.2.4, as
it only happens in this version. This is the QT version that is in
the Ubuntu 22.04 ppa, so this fix is a necessary evil as it affects
Ubuntu users.
This fixes the crash by deferring the hiding of the audio mixer
item to the next event loop.
Increment checks for the what's new file were not working as intended;
old stored increments would unintentionally pass to newer versions if
the newer versions did not explicitly start up with a whatsnew.json file
that had their version. The previous attempt to fix made it so that it
used a completely separate global.ini entry when a matching entry was
found. However, this entry did not take into account the beta or release
candidate number of the current build. This fixes it to bake in the
beta/rc number into the entry.
This #if test was intended to not show messages for new users, but
instead just made it so messages wouldn't show at all if the entry
wasn't previously set. Plus the expression was bad anyway.
This was causing betas and release candidates to not show what's new
messages when they should have been.
Just remove this code as it's silly to have at this point anyway. All
users should see what's new messages if they open the program, even if
for the first time.
- Requires MbedTLS on Linux
- Enabled by default on macOS and Flatpak
- Enabled on linux via ENABLE_WHATSNEW_LINUX
- Enables compilation of blake2 on Linux/macOS
- Makes header name check also work with lowercase header
- Changes WahtsNew to be only enabled when browser panels are available
Since Yami uses a different font, the 0 dB mark at the top of the
vertical meters would be cut off. This adds a 1px padding to the top
and bottom of the volume meters, when in vertical mode.
This reverts commit 08cee21158.
Turns out that while this did improve theme switching performance, it
also completely breaks styling on macOS and introduces visual quirks
on Windows after switching themes, such as sliders and dropdown contents.
# Conflicts:
# UI/obs-app.cpp
# UI/obs-app.hpp
- The buttons in the accessibility settings were a fixed height, so
they would be rendered in a undesirable way with the Yami theme.
- Also fixes clear button sizing issues in hotkeys sections
The empty state of the SourcesTree widget looks rather busy, with
multiple icons and text without spacing. Revamp that state to use
a single, faded-out, 32px icon, add some spacing between the icon
and the text, and put the icon above the text.
Exact same set of visual changes as before, but this one required
removing some hardcoded sizes from VisibilityItemWidget that were
clipping icons and text, and messing up with the height of items.
New icons for expanding and collapsing groups will be introduced
by next commit, so rename the current one to right.svg - it also
better matches the current filename layout, since we have up.svg,
down.svg, and left.svg.
Setting fixed sizes breaks rendering of the icons in subtle
ways, such as cutting 1px from their sizes. Removing these
fixes sizes seem to allow Qt to correctly render these icons,
and allows us to remove some negative margins hacks that were
added to deal with it.
Some languages such as Spanish or Brazilian Portuguese have longer
words that make the sidebar scroll. Unfortunately Qt reports a rather
large minimum size for the sidebar, so simply removing the maximum
size is not an option.
Increase maximum width of the sidebar to 180px.
The current icon style is somewhat all over the place, with some
icons having thin lines, some others having thicker lines; some
filling the pixel grid in center, others in edges; some trying to
reduce subpixel positioning, some completely unaware of it.
Rework these icons to have a consistent style, with elongated
lines, rounded strokes, and proper center alignment.
The "no_sources.svg" asset is not covered by this work because this
empty state will be worked on in a separate commit.
Further changes will adjust specific UI elements to better match
the icon style.
These icons are derived from the GNOME icon library. I've changed
the fill colour to #fefefe for Dark theme icons, and #000000 for
embedded icons. If further icons are needed, they can be found at
https://teams.pages.gitlab.gnome.org/Design/icon-development-kit-www/
Calling `devicePixelRatioF` from any thread but the main UI thread
triggers thread-safety warnings at runtime on macOS, because Qt uses
NSView calls to determine the value.
NSView calls are only allowed to be made from the main thread on macOS,
so instead the value is stored as a property of the OBSQTDisplay at
initialization, to be retrieved from the preview object later.
Static functions that do not have access to the preview object have the
pixel ratio passed in their call signature.