Commit Graph

890 Commits

Author SHA1 Message Date
gxalpha
4cf18a9abf UI: Add undo/redo to Paste Filters on audio mixer and scenes
Copy-Pasting filters on a scene or on a source via the audio mixer
context menu would not add an undo/redo action. This commit factors the
undo/redo logic out into a generic paste filters function that can be
used for pasting filters everywhere.
2024-05-25 17:06:21 -07:00
gxalpha
8184fa10a3 UI: Inline OBSBasic::ThemeChanged()
The majority of this method got removed in a prior commit [1]. Let's
inline the rest.

[1] 8dcfae9a39
2024-05-25 17:04:58 -07:00
Ryan Foster
cffdc15aac UI: Fix Grid Mode not persisting from View Menu
When clicking Grid Mode or List Mode from the context menu within the
Scenes list, whether or not Grid Mode is enabled persists between OBS
sessions. When clicking Grid or List from the View Menu, the setting
does not persist between OBS sessions. This seems to be a regression
from fc8c428521.

Previously, SceneTree's SetGridMode would set this config value. If the
intent is to not have SetGridMode directly set the config value, then
any function that calls SetGridMode other than the OBSBasic constructor
must instead set the config value.
2024-05-25 16:12:39 -07:00
Warchamp7
8dcfae9a39 UI: Remove unnecessary ProxyStyle usage 2024-05-23 18:55:43 -04:00
cg2121
b82a49e881 UI: Use OBSSourceLabel for VolControl
The OBSSourceLabel handles renaming of a source, so we don't have
to use the rename signals for volume controls.
2024-05-11 18:18:13 -07:00
cg2121
cd918a7f4c UI: Move projector rename signal
This moves the renaming of projectors from OBSBasic to OBSProjector.
2024-05-11 17:51:47 -07:00
gxalpha
79f680cab6 UI: Use weak_source_expired instead of getting the source 2024-05-10 17:42:28 -04:00
gxalpha
fad6f43608 UI: Set default recording format to Fragmented MOV on macOS
In 22205d582c, the change to default to
Fragmented MP4/MOV on all platforms was reverted due to compatibility
issues with the default video player on Windows.
On macOS however, the default player (QuickTime Player) works fine with
fragmented formats, and instead is unable to play MKV files (which have
always been the default format for OBS). This change makes videos with
the default settings playable on macOS with the default player.
2024-05-04 17:20:05 -07:00
Aleks Todorov
ec31c7e5bf UI: Set recording paused before anything else
When this call was first introduced in eab10d48b2, it was at top of this
block, albeit after the calls to `pause`. Over time it has slowly
shifted lower and lower in the block.

In reality, it should be the first thing in the block to ensure that
further calls have accurate information about the pause state to update
themselves.
2024-05-04 13:39:34 -07:00
derrod
31aa700d22 UI: Always retain collection data of unloaded modules 2024-04-13 16:06:28 -07:00
powersagitar
b5b9d1c373 Extend min panel width to eliminate text clipping
Change size policy of "Start Virtual Camera" button to ensure the
minimum width of `Controls` panel is the same as "Start Virtual
Camera" button plus the gear (settings) icon, therefore to
eliminate text clipping when overflow.
2024-04-09 20:57:37 -04:00
Penwywern
b80d45f132 UI: Log available encoders on load 2024-04-08 16:35:16 -04:00
Ryan Foster
22205d582c Revert "UI: Change default format for release builds to fMP4/fMOV"
This reverts commit 9488bb20b6.

This is currently a frequent support issue as Windows Media Player,
Movies & TV, and File Explorer all cannot seem to handle fMP4 files
correctly. Windows Media Player and Movies & TV will play the files
fine, but no duration is listed and the applications cannot seek the
file. File Explorer will simply not list the file's length/duration (the
field is shown as having no set value). This was somehow not caught
during a year's worth of beta and RC builds. The world just wasn't ready
for this. =(

We have reported these issues to Microsoft, and we will revisit this in
the future.
2024-04-05 14:46:53 -04:00
tytan652
78cd07bd58 UI,plugin: Refactor virtual camera enablement 2024-03-30 16:43:30 -07:00
Ryan Foster
11131682b1 UI: Check low disk space only if recording to a file
The Custom FFmpeg Output allows the user to configure it to output to a
URL instead of a file. In OBSBasic::StartRecording(), we unconditionally
call LowDiskSpace() to check for low disk space because we assume that a
"recording" will always be to disk. When os_get_free_disk_space() is
called on a non-existent path, it returns 0, which causes OBS to emit a
low disk space warning. Instead, only call DiskSpaceMessage() if not
"recording" to a URL.
2024-03-30 16:24:04 -07:00
Rob Howell
f5e77a4587 UI: Fix scene rename on tab and back tab 2024-03-30 16:09:41 -07:00
derrod
9488bb20b6 UI: Change default format for release builds to fMP4/fMOV 2024-03-11 18:40:14 -04:00
Exeldro
f275080abb libobs: Fix crop to bounds ABI break 2024-02-20 21:18:51 -06:00
test
66d210cf1b UI: Fix problem with Yes/No message box buttons not translated 2024-02-20 18:08:16 -05:00
CrackThrough
7d25a80610 UI: Fix null pointer dereference
strcmp(obs_get_encoder_codec(option), "opus") causes the application to
segfault while loading service if find_encoder(id) returns NULL. Add a
null pointer check to prevent that from occurring.
2024-01-31 02:13:36 -06:00
derrod
0a8e00c478 UI: Add and migrate to GPU scaling options 2024-01-20 19:28:52 -06:00
pkv
f186268507 UI: Enable audio multi-track w/ mpegts streaming
This enables audio multi-track support in UI for mpegts streams (srt,
rist ...).
The UI changes were coded though to allow re-use by other protocols.

Signed-off-by: pkv <pkv@obsproject.com>
2024-01-06 18:42:54 -06:00
tytan652
519c19aa4a UI: Fix unused-variable
Some variables were not guarded for being unused when built with FFmpeg 6.1
2024-01-06 18:24:58 -06:00
derrod
46c00a95cd UI: Save last used output resolution to scene collection 2024-01-06 17:06:00 -06:00
cg2121
ef99553a7e UI: Disable edit transform if item is locked
The transform window was still accessible if the scene item
was locked.
2023-12-10 01:27:28 +01:00
cg2121
cd01120740 UI: Don't paste transform on locked item
This disables pasting transforms on an item that is locked.
2023-12-09 18:09:33 -06:00
Penwywern
3cc7dc0e7c UI: Fall back in case of invalid scene name on load 2023-12-04 05:06:42 -06:00
Ryan Foster
c0ee1e718d UI: Fix typo in Virtual Camera logging functions
cvam -> vcam
2023-11-07 19:09:25 -05:00
Penwywern
a49b35c3de UI: Log Virtual Camera output type 2023-11-07 00:39:01 -06:00
gxalpha
baa78b36ef UI: Enable "Paste Filters" after copying from scenes or mixer
Fixes an issue where if no filters had previously been copied and the
user copies a filter from either the scene tree or the audio mixer, the
"Paste Filters" action would not be available until the Edit menu
reloads (e.g., by selecting another source in the source tree).
2023-10-08 10:59:00 -06:00
derrod
e4587ae9bd UI: Cleanup remaining uses of old version macros 2023-10-06 17:21:51 -06:00
Ryan Foster
02478d4939 UI: Use std::shared_ptr instead of QSharedPointer
Also use std::weak_ptr instead of QWeakPointer as needed.

Qt has been porting QSharedPointer and QWeakPointer to std::shared_ptr
and std::weak_ptr respectively. QSharedPointer is apparently 2x slower
than std::shared_ptr.

References:
 * https://bugreports.qt.io/browse/QTBUG-109570
 * https://codereview.qt-project.org/c/qt/qtbase/+/359678
 * https://codereview.qt-project.org/c/qt/qtgrpc/+/447780
 * https://codereview.qt-project.org/c/qt/qtbase/+/450134
 * https://codereview.qt-project.org/c/qt/qttools/+/450776
 * https://codereview.qt-project.org/c/qt/qttools/+/450777
 * https://codereview.qt-project.org/q/QSharedPointer
2023-10-04 18:36:20 -04:00
Ryan Foster
3d05d681b7 UI: Use C++11 ranged-for instead of Q_FOREACH
Qt has been porting uses of Q_FOREACH/foreach to C++11's ranged-for.
Let's do the same.

References:
 * https://doc.qt.io/qt-6/foreach-keyword.html
 * https://codereview.qt-project.org/q/Q_FOREACH
2023-10-04 17:58:02 -04:00
Richard Stanway
c71bbcf4d9 UI: Avoid using newlines in error messages
Some errors include HTML links directing users to e.g. driver updates
or further information. Using a raw newline instead of <br> causes Qt to
skip parsing the HTML, resulting in an ugly mess of HTML displayed to
the user instead of the intended links.
2023-09-12 17:54:42 -07:00
gxalpha
3ff7cd5625 UI: Untangle ifdef'd if-statement to un-confuse Xcode
Like many IDEs, Xcode has this feature where it shows the declaration of
the method currently being worked in. However it gets confused by scopes
starting inside of preprocessor guards and ending outside them,
resulting in the declaration of OBSBasic::ReceivedIntroJson always being
shown in window-basic-main.cpp from that method downwards. We can work
around that by starting and ending the if-scope outside of the ifdefs.
2023-09-06 21:48:52 -07:00
Ryan Foster
ece8df2ace UI: Increase minimum output resolution to 32x32
Some hardware encoders fail in indecipherable ways if you try to at
certain low resolutions such as 17x17 or 19x19, but works at 20x20.
However, there is no good way to determine what the minimum working
resolution is for every possible encoder. There isn't that much
difference between 8x8 and 32x32, except that the latter will reduce or
eliminate such odd failure cases, so let's increase the minimum required
output resolution by just a little bit.
2023-08-26 16:32:24 -07:00
Lain
a44ab2efcc UI: Add timer to NewYouTubeAppDock()
CEF apparently doesn't like it and is unable to handle when you
destroy/recreate CEF instances very quickly, so... let's just put a
timer on this insanely terrible function. I guess. Whatever.
2023-08-18 11:28:16 -07:00
derrod
a06d6893b9 UI: Remove silent OpenGL fallback on Windows 2023-08-16 11:03:00 -07:00
Jimi Huotari
f83b0d93f1 UI: Fix compiling without nlohmann JSON
After commit 8955338624, 'UI/update/models/whatsnew.hpp' is included
unconditionally, even with 'ENABLE_WHATSNEW=OFF', which breaks
building OBS Studio without nlohmann JSON.
2023-08-16 19:43:46 +02:00
gxalpha
518bdc7af1 UI: Fix transform shortcuts with multiple items selected
Firstly, removes the UpdateTransformShortcuts() method introduced in
c33fa8b which was trying to re-implement the behavior of
UpdateEditMenu().
Secondly, updates UpdateEditMenu() to account for sources without video.
Sources without video shouldn't be able to have their transform edited,
copied, pasted, or changed in any other way (because they don't have
one).
2023-08-15 15:56:43 -07:00
Lain
fee4f2dc48 Merge pull request #9435 from norihiro/qtdisplay-destroy-at-surface-event-3
Fix crash at render_display while shutdown on macOS
2023-08-15 15:49:54 -07:00
Matt Gajownik
7d9f8e7cac UI: Set browser dock title in constructor
Works around a bug in Qt where setWindowTitle called on a native window
that hasn't been initialised yet causes the title data to be lost,
resulting in the window's title never being set.
2023-08-15 12:27:18 -04:00
Norihiro Kamae
dfce9b929a UI: Fix crash at resizing display followed by destruction on macOS
The resize event was triggered during the shtudown of OBS. A commit
9f330050ef moves the actual resize code in `gl_update` to the main
thread without synchronizing between the main thread and the graphics
thread. When the display context is destroyed just after the resizing,
the delayed resize code can read the destroyed display context.
As a workaround, this commit will destroy the display context at the
earlier timing of the shutdown process.
2023-08-15 14:01:11 +09:00
Norihiro Kamae
fd502cbd4d UI: Fix crash at render_display while shutdown on macOS
The display context was sometimes created again by a resize event after
destruction from `OBSBasic::closeEvent`. That resulted in the display
context alive until reaching the destructor of the `OBSQTDisplay` class
and caused a crash in `render_display` on macOS. To avoid this, destroy
the display context at the event `SurfaceAboutToBeDestroyed` and let not
create the display context again.
2023-08-15 13:40:09 +09:00
Matt Gajownik
b429d00440 UI: Show link to release notes in Help menu 2023-08-12 16:46:38 -07:00
Ryan Foster
64139a6bbd CI: Update to clang-format 16
This commit also modifies UI, libobs, and plugins.
2023-08-10 16:07:25 -04:00
田七不甜
e8dbeede76 UI: Make title bar "SAFE MODE" translatable 2023-08-05 17:21:22 -07:00
tytan652
049f4454d4 UI: Fix YouTubeAppDock restore dock state 2023-08-05 16:44:16 -07:00
gxalpha
6a42d88ca7 UI: Don't call obs_source_get_output_flags on a NULL source 2023-08-05 16:30:44 -07:00
Lain
78cb2aa361 UI: Fix case where cef func may not be present
Due to a particular... plugin we all know and love, the new
QCefWidget::executeJavascript() function may not actually be present as
it should be. So, we have to verify that it's available, and only use it
in that case.
2023-08-05 04:35:31 -07:00