Commit Graph

320 Commits

Author SHA1 Message Date
Warchamp7
855b8a9d6f frontend: Add minimum width to spinboxes 2026-05-08 14:35:15 -04:00
Richard Stanway
cd7562791f frontend: Apply process mitigation policies for Windows
DEP: Enable DEP as it's still opt-in even on Windows 10. No OBS code or
plugins should be executing data as code and this is an important
mitigation against stack-based buffer overflows.

ASLR: Enable and force ASLR. This makes it harder for any potential
exploits to use fixed offsets into OBS or Windows DLLs to run gadgets.

Extension Points: Disable extension points. These are typically used for
system-wide code injection, and we have generally had trouble with
various things injecting into OBS and causing issues.

Handle Check: Enable strict handle checks when running debug builds.
This will raise an exception if we operate on an invalid handle,
something that should hopefully not ever happen in the current code.
2026-05-08 14:08:12 -04:00
Warchamp7
1b41b44b50 frontend: Fix warning for themeWatcher 2026-05-07 17:34:08 -04:00
cg2121
8163bbf5c8 frontend, libobs: Add ability to set custom source icons
This allows setting dark and light icons for a source.
2026-05-07 16:11:24 -04:00
Warchamp7
12597e9484 frontend: Replace add source dropdown with dialog
Co-Authored-By: Lain <134130700+Lain-B@users.noreply.github.com>
2026-05-07 15:31:10 -04:00
Grant Likely
fbc99ecd74 frontend: Add theming for checked QToolButtons
The Yami theme provides colours for checked QPushButtons, but does not
do the same for checked QToolButton. This commit adds colors for the
QToolButton:checked: state that match the QPushButton:checked: colors
2026-05-07 14:34:01 -04:00
Exeldro
b093030106 frontend, obs-filters: Add missing file support for filters 2026-05-07 12:58:16 -04:00
Ed Maste
d820beb2a7 frontend: Remove move_to_xdg (again)
To support upgrades from older versions move_to_xdg was reintroduced for
FreeBSD.  This has now been available since release 31.0, so users have
likely upgraded across this version and it is no longer needed.

This reverts commit 39b91d8875.
2026-05-06 23:20:50 -04:00
cg2121
750c016161 frontend, libobs: Add OBSProperties OBSPtr type
We no longer have to manually destroy obs_properties_t.
2026-05-06 17:27:36 -04:00
Warchamp7
74efa2287b frontend: Use vector for filters dialog signals
Co-Authored-By: Clayton Groeneveld <19962531+cg2121@users.noreply.github.com>
2026-05-06 16:29:24 -04:00
shiina424
843e5890eb frontend: Fix checked control button color not changing in System theme 2026-05-06 16:04:30 -04:00
Warchamp7
52ca7d905b frontend: Move source selection handling to parent 2026-05-06 14:48:32 -04:00
Sebastian Beckmann
649beed45c frontend: Don't store QT_TO_UTF8 to std::string
QT_TO_UTF8 returns a const char * that, in general, shouldn't be stored.
This is because QT_TO_UTF8(str) expands to str.toUtf8().constData():
toUtf8() returns a QByteArray, and constData() the pointer to its data
which is only valid until the QByteArray goes out of scope, which is
immediately after the call.
The original code that is changed here only works because in all of the
situations, the object that is stored to is actually a std::string that
gets constructed implicitly, so the constData() pointer is valid long
enough for the std::string constructor to copy the data.

The issue is that any "... = QT_TO_UTF8" code *looks* unsafe, and may
lead new or unfamiliar contributors to assume that they can also use it,
only to do "const char *... = QT_TO_UTF8(...)" which is dangerous.
Additionally, it introduces an unnecessary round of implicit conversions
and copies when QString.toStdString() already exists and copies into the
string buffer directly.
2026-05-06 14:15:44 -04:00
Sebastian Beckmann
d208c0a128 frontend: Clean up unneeded conversions on YouTube dialog close
The strings (broadcast.id, stream.[id|name]) are stored as QString,
converted to const char * by QT_TO_UTF8 in OBSYoutubeActions, implicitly
converted back to QString because the OBSYoutubeActions::ok takes
const QString &, only to be converted back to const char * by QT_TO_UTF8
in OBSBasic_YouTube and immediately implicitly turned into
const std::strings, only to have .c_str() called on those to get their
const char * again which is needed for libobs. This is insane.

Let's just pass const std::string & and be happy.
2026-05-06 14:15:44 -04:00
Sebastian Beckmann
e38e9f8070 frontend: Pass std::string as result from RemoteTextThread
RemoteTextThread and WhatsNewInfoThread explicitly convert their results
into QString, but many consumers need std::string, converting them
back. Let's just use std::string directly and only convert to QString
where actually needed.
2026-05-06 14:15:44 -04:00
PatTheMav
7f164619e8 frontend: Enable use of delete key on macOS
While it is canonical to use the backspace key as an alternative to the
dedicated "delete" key (which is omitted on many smaller-sized Apple
keyboards), the delete key is still available on full-size Apple
keyboards and obviously third-party keyboards.

This change adds the delete key as an alternative to the backspace key
to allow removal of scene items from the scene list in the UI.
2026-05-05 15:11:09 -04:00
Ryan Foster
085a51ab0f frontend: Replace implicit "=" with "this" 2026-05-01 14:09:10 -04:00
Ryan Foster
852d9639f1 frontend: Fix includes in OBSUpdate
Some additional includes are required for C++20.
2026-05-01 14:09:10 -04:00
Warchamp7
6711295d99 frontend: Fix nested menu styling 2026-04-20 18:20:08 -04:00
Warchamp7
b34d17714e frontend: Optimize audio mixer updates 2026-04-20 17:54:47 -04:00
shiina424
cf1c425a94 frontend: Rename MixerScrollArea in the Classic theme 2026-04-16 14:51:40 -04:00
shiina424
78822293ff frontend: Remove unused parameters from Classic theme 2026-04-16 14:51:40 -04:00
shiina424
1b54407fd5 frontend: Remove unused parameters from System theme 2026-04-16 14:51:40 -04:00
shiina424
2475b85336 frontend: Remove unused parameters from Rachni theme 2026-04-16 14:51:40 -04:00
shiina424
787b62d7bf frontend: Remove unused parameters from Light theme 2026-04-16 14:51:40 -04:00
shiina424
ab9125ff54 frontend: Remove unused parameters from Acri theme 2026-04-16 14:51:40 -04:00
Joel Bethke
154088beef frontend: Fix contributing link in About
Fixes the link to the new contributing document, which is now .md and not .rst
2026-04-10 17:49:36 -07:00
Warchamp7
42564df7ec frontend: Fix muted colors 2026-04-01 10:45:48 -04:00
Warchamp7
6953e5b2c1 frontend: Add toolbar actions to mixer menu 2026-04-01 10:45:48 -04:00
Warchamp7
37900c8754 frontend: Fix audio mixer light theme colors 2026-04-01 10:45:48 -04:00
Warchamp7
d554ed821c frontend: Improve VolumeMeter size calculation 2026-04-01 10:45:48 -04:00
Warchamp7
8308f1358c frontend: Fix audio mixer sorting weight
Pinned sources were appearing before Global, which was not intended
2026-04-01 10:45:48 -04:00
Warchamp7
eee47579be frontend: Fix disabled sources appearing in audio mixer
This was partially addressed in #13118 but this check was missed
2026-04-01 10:45:48 -04:00
Warchamp7
9236e4fba2 frontend: Improve VolumeName size calculations 2026-04-01 10:45:48 -04:00
Warchamp7
ad41674568 frontend: Adjust mixer horizontal layout 2026-04-01 10:45:48 -04:00
Warchamp7
dba42dae7a frontend: Add missing tooltips to audio mixer 2026-04-01 10:45:48 -04:00
Warchamp7
fb5140d0a3 frontend: Only send event when scene list changed 2026-03-04 15:48:03 -05:00
Warchamp7
bffd5f5980 frontend: Improve plugin manager safe mode behavior 2026-02-25 19:44:39 -05:00
Ryan Foster
423d3dfc9c frontend: Update parent logic for systray menu projector items
Adding some more cleanup with Qt Widget/Object parenting and manual
deletes.
2026-02-24 18:55:26 -05:00
Lordmau5
336261c868 frontend: Update parent logic, remove explicit delete calls
Not necessary anymore in Windows tests at least since the parent widget
(in this case OBSBasic) is taking care of cleaning up its children.
2026-02-24 18:55:26 -05:00
Lordmau5
c1f8cbb9d5 frontend: Fix unclean shutdown on Windows
This issue was brought back by a somewhat recent change to fix slow
shutdown times in Linux.

To paraphrase tfo from the OBS Discord:
"I think the issue is that all the tray actions are parented to
trayIcon, so when it's deleted, Qt auto deletes them as children, then
delete trayMenu on the next line accesses those dead actions."

We now create the tray menu first, then setting the parent of the
actions (show / hide, stop / start streaming, etc.) to the tray menu.
2026-02-24 18:55:26 -05:00
Warchamp7
acd4c97873 frontend: Fix duplicated layout name 2026-02-20 16:35:30 -05:00
Warchamp7
decee5780d frontend: Set mixer toolbar size policy 2026-02-20 16:13:06 -05:00
Ryan Foster
3786fa3d3e updater: Update CMake to make builds more reproducible
Strip the PDB. Provide an alternate path for the PDB.

We already use /PDBALTPATH for set_target_properties_obs, but this
target understandably does not use that.
2026-02-20 15:50:14 -05:00
Richard Stanway
1106c1acaf updater: Add log window and additional log messages 2026-02-20 15:16:35 -05:00
Richard Stanway
6340d7a845 updater: Check return values in ClearShaderCache
Invoking filesystem::remove_all on potentially truncated paths seems
like a bad idea.
2026-02-18 15:26:28 -05:00
Warchamp7
8bd4511843 frontend: Ignore sources with disabled audio in mixer 2026-02-13 14:26:50 -05:00
Warchamp7
9fc4a50746 frontend: Defer mixer rename dialog 2026-02-12 17:39:24 -05:00
Warchamp7
0755f475a6 frontend: Skip background paint for invalid sizes 2026-02-12 17:07:21 -05:00
Warchamp7
82b1112389 frontend: Fix VolumeControl rendering 2026-02-11 15:46:19 -05:00