Commit Graph

31 Commits

Author SHA1 Message Date
tytan652
c9bbe81d53 frontend: Add vcs-browser to metainfo
flatpak-build-lint warns to add it.
2026-01-15 14:40:53 -05:00
Warchamp7
d05c8cba25 frontend: Remove unused audio mixer widgets 2026-01-15 12:53:30 -05:00
Warchamp7
5fc2476913 frontend: Replace add source dropdown with dialog
Co-Authored-By: Lain <134130700+Lain-B@users.noreply.github.com>
2026-01-14 14:49:38 -05:00
Warchamp7
a42a6c4c5f frontend: Refactor and update Audio Mixer 2026-01-13 16:34:33 -05:00
Warchamp7
3e5cd44fd5 frontend: Add Menu Checkbox widget
Update MenuCheckBox.hpp
2026-01-13 16:34:33 -05:00
Matt Gajownik
a5f0988933 Update translations from Crowdin 2026-01-10 01:02:43 -05:00
Warchamp7
c01a9bea49 frontend: Create AlignmentSelector widget 2026-01-08 21:12:30 -05:00
Warchamp7
92a83e4c4c frontend: Sync Preview/Program size and positioning 2026-01-08 19:58:07 -05:00
Sebastian Beckmann
a9634db561 frontend/cmake: Enable Qt strict mode
Qt strict mode disables APIs deemed "'suboptimal' or 'dangerous'" [1]
and "clearly undesirable" [2] by Qt that will be removed in the long
term.
Usages of the APIs in OBS have been removed in the previous commits, and
by setting this flag we keep ourselves from using them again.
The versioning works in a way where e.g. a new addition to this in 6.9
would only be disabled if at least 0x060900 is set. By setting 0xFF0000,
we're effectively disabling any APIs that are deemed to be bad in any
future Qt version (up to 255).
While this could lead to OBS not being buildable against bleeding edge
Qt, it also means that it will be noticed early. Should the disabled API
turn out to be too complex to remove, the value can be downgraded to the
last working one then.

[1] qt/qtbase@3a6c8e02b6
[2] qt/qtbase@f9163ae7a8
2025-12-17 16:35:45 -05:00
tytan652
c142571d5c frontend: Cleanup Qt GuiPrivate linkage
Remove unneeded linkages and guard needed ones for Qt versions earlier
than 6.9.0.
2025-12-17 15:04:49 -05:00
Warchamp7
bd2024eb81 cmake: Fix order of frontend targets
Updates targets to be consistent in their order putting uppercase before lowercase
2025-12-01 16:40:34 -05:00
Warchamp7
14572498dc frontend: Adjust application shutdown logic
Improves app shutdown in a few ways, including separating out different
pieces of the OBSBasic close handler into their own functions.

Removes the crash handler sentinel earlier when the main window is closed,
preventing unclean shutdown warnings when a plugin causes issues. While not
ideal, the dialog is not useful when we cannot specify which plugin caused the
problem.

Increases shutdown priority of the main application so that when OBS interrupts
the session ending, CEF is not closed at the same time. This fixes a crash.

Additional safeguards and event handling to try to ensure a smoother shutdown.
2025-12-01 16:40:34 -05:00
Matt Gajownik
99c3a4b797 Update translations from Crowdin 2025-09-08 22:38:40 -04:00
FiniteSingularity
23b67268e7 frontend: Provide UI for phase 1 of plugin manager
For phase 1 of the plugin manager, the ability to toggle off/on plugins
to be loaded at launch is provided.

This commit adds a new Plugin Manager dialog which can be accessed from
the Tools menu, which shows a list of all installed 3rd party plugins
with a checkbox to toggle them off or on.  If a change is made, the user
is prompted to restart OBS. To allow this, the plugin manager uses a
json based config file stored in the OBS config directory. Additionally
for sources in the source tree, a sample UI has been provided that
indicates any sources whose parent module is disabled, by turning its
title red.
2025-08-28 14:29:10 -04:00
Sebastian Beckmann
9e0c3219ff frontend: Move idian widgets to shared/qt 2025-08-22 16:21:52 -04:00
Sebastian Beckmann
de9fcd6b42 frontend: Unify naming of Idian Playground
It's called Idian Playground in some places and Widget Playground in
others. Idian Playground is more precise so let's use that.
2025-08-22 16:21:52 -04:00
Sebastian Beckmann
c527f9e34c cmake: Don't add Idian playground when feature is disabled 2025-08-22 16:21:52 -04:00
Warchamp7
e8f6143769 frontend: Add new Idian widgets
Co-Authored-By: derrod <rodney@rodney.io>
2025-08-22 16:21:52 -04:00
PatTheMav
de997b1e2f frontend: Update crash handling and log upload functionality
Updates include:

* Use of CrashHandler to provide automatic uploads of the most recent
crash log if an unclean shutdown was detected and it has not been
uploaded yet.
* Detection and handling of unclean shutdowns is delegated entirely to
the CrashHandler class
* Use of OBSLogReply has been replaced with the LogUploadDialog, which
asks for confirmation before new uploads of log files (confirmation is
skipped for files with available upload URLs already - only available
for crash logs with this change)

Architectural changes:
* OBSApp is the layer responsible for application launch and shutdown
states, as well as crash logs and application logs
* The actual handling is delegated to purpose-made classes which OBSApp
owns instances of
* OBSBasic in turn refers to OBSApp for all this functionality, and can
subscribe/connect to appropriate events exposed by OBSApp to this
purpose
* Implementation details (like the existence of the CrashHandler class)
are not exposed to OBSBasic or the LogUploadDialog

The amount of changes for normal log file upload have been purposefully
limited. A proper refactoring of the application log file handling will
move this code out of OBSBasic as well.
2025-08-22 15:38:12 -04:00
PatTheMav
e4e3035661 frontend: Add LogUploadDialog class 2025-08-22 15:38:12 -04:00
PatTheMav
272825b46a frontend: Add CrashHandler class
The CrashHandler class encapsulates all functionality around unsafe
shutdown detection as well as crash log discovery and log upload.

Each (functional) CrashHandler should be initialized with an app launch
UUID, which enables the handler to disambiguate a sentinel file for the
current app launch from those of prior app launches.
2025-08-22 15:38:12 -04:00
Matt Gajownik
ffef7504ac Update translations from Crowdin 2025-06-09 14:55:50 -04:00
Ed Maste
e0e132e5cf frontend: Fix build on FreeBSD
libpci is now required on FreeBSD, as on Linux.

Fixes: e1d2cf705d ("frontend: Support enhanced broadcasting on Linux")
2025-05-12 17:21:09 -04:00
Dennis Sädtler
368185019e frontend: Add support loading/saving additional canvases 2025-05-02 14:35:22 -04:00
Dennis Sädtler
afd7619c98 frontend: Add OBS::Canvas class 2025-05-02 14:35:22 -04:00
gxalpha
28960a48a7 frontend/components: Remove NonCheckableButton
The NonCheckableButton class was previously used for situations where a
*checkable* button was meant to not be checkable by the *user*, but only
through code. This was useful mostly as a styling tool (and to confuse
developers like me as to what it actually did).

The disadvantage is that such a button - a button that is actually
checkable (has the checkable attribute) but ignores the user - still
gets recognized by QAccessible as a checkable button, which has
accessibility issues when used like a normal button (see QTBUG-110737).

We can still get the styling effect on *actually* uncheckable buttons by
giving them a class, so this widget should not be necessary.
2025-04-24 15:37:50 -04:00
PatTheMav
ca44e3037d frontend: Add SceneCollection class as data model for Scene Collections 2025-04-21 15:17:11 -04:00
Alex Luccisano
e1d2cf705d frontend: Support enhanced broadcasting on Linux
Enhanced broadcasting requires system information to be gathered
on the client and submitted to the GetClientConfiguration request
in order to obtain a valid response from the server. This commit
adds support for gathering the required information on Linux-based
systems.
2025-04-01 23:18:15 -04:00
Ryan Foster
ba9ac1a9a8 cmake: Replace COMPILE_FLAGS with COMPILE_OPTIONS
COMPILE_OPTIONS was added and superseded COMPILE_FLAGS in CMake 3.11.

https://cmake.org/cmake/help/v3.30/prop_sf/COMPILE_FLAGS.html
https://cmake.org/cmake/help/v3.30/prop_sf/COMPILE_OPTIONS.html
2025-02-10 12:57:38 -05:00
gxalpha
79f5ba0e1d cmake: Turn off camera reaction by default on macOS 14.4 and later
The reaction effects that macOS adds by default are confusing to users
as they're turned on by default and users don't know where they come
from or where to turn them off. Setting this flag in the apps Info.plist
prevents them from being turned on by default. The macOS UI makes it
very obvious to the user where they can turn them on should they wish to
do so.
2025-01-16 16:33:59 -05:00
PatTheMav
08a2eb304b frontend: Migrate CMake files 2025-01-08 17:33:13 +01:00