1976 Commits

Author SHA1 Message Date
Jim
5d87f3c00b
Merge pull request #3426 from Programatic/undo_redo
UI: Implement Undo/Redo System
2021-03-30 03:16:24 -07:00
Ford Smith
86eb7aeb69 UI: Undo/Redo Properties and Filters
Implements undo/redo for both properties and filters. Works by creating
a new callback that gets called to save undo/redo states after a timer
is fired. Also disabled undo/redo until the actions have completed to
prevent a user from being able to disrupt the stack by perfoming actions
before others have finished.
2021-03-29 03:06:26 -04:00
Ford Smith
999495ca8c UI: Undo/Redo context bar properties
Implements undo/redo for changing of properties done through the context
bar.
2021-03-29 03:06:26 -04:00
Ford Smith
a374c023a1 UI: Undo/Redo Scene Collections
Implements undo/redo for scene collections. This includes operations
including rename, delete, and addition.
2021-03-29 03:06:26 -04:00
Ford Smith
3c5e2ddc37 UI: Undo/Redo audio
Implements undo/redo for advanced audio properties.
2021-03-29 03:06:26 -04:00
Ford Smith
3a620c485e UI: Undo/Redo Transformations
Implements undo/redo for transformations of sources, both through
preview and the transformations properties.
2021-03-29 03:06:26 -04:00
Ford Smith
60d95cb5bd UI/libobs: Undo/Redo Sources and Scenes
Implements the Undo/Redo for scenes and sources, ranging from renaming,
deletion, addition. It also adds several elements to libobs that were
designed to facilitate undo/redo, and should not affect the rest of
libobs.
2021-03-29 03:06:26 -04:00
Ford Smith
eced5a320b UI: Initial Undo/Redo
Starting to develop Undo/Redo. This just implmements the undo/redo stack
and its api.
2021-03-29 03:06:26 -04:00
Nirusu
a52012e8c5 UI: Fix canvas resolution in auto-config
Fix the returned display resolution when scaling is enabled to determine
the correct canvas resolution in the auto-config utility, using the same
approach as in 2787e63. This fixes #4298.
2021-03-25 19:25:13 -07:00
Ryan Foster
4ed7cd463d frontend-tools: Remove Qt5X11Extras
Qt5X11Extras (QX11Info) was added in
762983b5d853ba8444c4efee450ea872b294060e, but it doesn't seem to
actually be used. Qt6 doesn't yet ship X11Extras, so let's remove it.
2021-03-17 12:48:21 -07:00
Ryan Foster
0b88bfbf09 decklink-output-ui: Remove Qt5X11Extras
Qt5X11Extras (QX11Info) was added in
762983b5d853ba8444c4efee450ea872b294060e, but it doesn't seem to
actually be used. Qt6 doesn't yet ship X11Extras, so let's remove it.
2021-03-17 12:48:21 -07:00
Exeldro
32e7ba1abe UI: Add visibility transitions
This also modifies libobs.

This adds the ability for scene items to have transitions
when their visibility is toggled.
2021-03-16 22:15:16 -07:00
Anton Bershanskiy
543f58d4a6 UI: Copy Filters menu is active only if applicable 2021-03-16 21:38:06 -07:00
Kurt Kartaltepe
346e268a3d UI: Remove x11info dependency
This moves X11 platform to the qt private functions, as x11info was
removed from Qt6 so this is required for a clean Qt5/6 transition.

This is the implementation of x11info::getdisplay so it should still
work on older platforms. This "API" doesnt really guarantee anything
though.

Also clean up wayland only bits as we use them for all windowing systems
now, and the name of the native pointer we want is the same on both
platforms for now.
2021-03-16 18:50:52 -07:00
Georges Basile Stavracas Neto
7e36331c98 UI: Only set AA_DontCreateNativeWidgetSiblings on Wayland
It seems this introduced various regressions on X11 (and, potentially, on other
platforms too, but needs confirmation). Let's preserve the old ways on current
platforms, and only use this flag on the new Wayland platform.
2021-03-16 01:48:29 -07:00
Matt Gajownik
a86b4a9421 UI: Save video settings after 'Resize output (source size)'
Fixes #4207
2021-03-12 20:53:19 -08:00
Peter "Marenthyu" Fredebold
2a87543d82 UI: Add css on Drag and Drop
Adds parsing for the "layer-css" query param of URLs dragged into the main window, similarly to the other layer-* parameters already used.
2021-03-10 22:59:07 -08:00
Anton Bershanskiy
7d5430f4ea UI: Make drag and drop file ext. case insensitive
Fixes obsproject/obs-studio#4236
2021-03-10 20:40:04 -08:00
Christopher P Yarger
25a335dc3c UI: Add Frontend API function to get value of T-bar
Also add a Frontend API event for when the T-bar's value changes.
2021-03-10 20:18:36 -08:00
Clayton Groeneveld
40fda5fc08 UI: Remove UpdateSceneCollection function from header
This function wasn't removed in PR 4308.
2021-03-10 20:06:08 -08:00
Jim
9ecae253f0
Merge pull request #4314 from WizardCM/fix-group-resize-1
UI: Don't attempt to resize parent group when changing cursor
2021-03-09 20:59:05 -08:00
Ryan Foster
7214feba73 UI: Set Qt::AA_UseHighDpiPixmaps only on Qt5
Qt6 enables Qt::AA_UseHighDpiPixmaps by default and will emit a warning
if you try to enable it. To prevent the warning, only set this on Qt5.
2021-03-09 10:28:19 -05:00
Ryan Foster
1793515bbf UI: Explicitly include QFile
Explicitly include QFile to prevent a build failure with VS2019 and Qt6.
2021-03-09 09:31:10 -05:00
Ryan Foster
e81f8e3857 UI: Don't use QTextStream::setCodec in Qt6
In Qt6, QTextStream::setCodec has been replaced by
QTextStream::setEncoding. However, all text is assumed to be UTF-8, so
we don't need to specify UTF-8 in Qt6.

https://doc.qt.io/qt-5/qtextstream.html#setCodec-1
https://doc.qt.io/qt-6/qtextstream.html#setEncoding
2021-03-09 09:16:19 -05:00
Ryan Foster
05d29aa4e3 UI: Set default string size arg for QT_UTF8 / QString::fromUtf8
Our QT_UTF8(str) macro uses QString::fromUtf8(str) with no size
argument. In Qt5, QString::fromUtf8 uses a default value of -1 for the
size arg. If size is -1, it is taken to be strlen(str). In Qt6,
QString::fromUtf8 doesn't use a default value for the size arg, but has
the same behavior if you manually specify -1 for the size. Let's
manually specify -1 to maintain the same behavior between Qt5 and Qt6.

https://doc.qt.io/qt-5/qstring.html#fromUtf8
https://doc.qt.io/qt-6/qstring.html#fromUtf8
2021-03-09 09:16:16 -05:00
Ryan Foster
37971e7bf9 UI: Force plugins to use version appropriate Qt Network
Make building against either Qt5 or Qt6 easier by checking the Qt
version used and loading the appropriate Qt Network DLL.
2021-03-09 09:16:07 -05:00
Matt Gajownik
b2fb0ca07f UI: Don't attempt to resize parent group when changing cursor
Fixes an issue where resizing a source did not resize the parent group.
2021-03-09 21:15:17 +11:00
Kurt Kartaltepe
513bcb8e35 UI: Cleanup Qt for Qt6
This changes cleans up some deprecated functions that were removed in
Qt6. Some are placed behind version ifdefs and others are replaced for
their non-deprecated Qt5 version.
2021-03-08 21:41:13 -08:00
Mike
40f99da8a2 UI: Fix Qt signal connection warnings
Closes obsproject/obs-studio#4264
2021-03-08 21:39:43 -08:00
Exeldro
901a030adf frontend-tools: Add edit script button 2021-03-08 08:37:37 -08:00
VodBox
e81cf90c1e UI: Disable scroll and keyboard input for t-bar
closes #2951
2021-03-09 01:31:08 +13:00
VodBox
d2e3d0da3c UI: Remove unnecessary code 2021-03-08 23:42:21 +13:00
VodBox
3046f3b578 UI: Fix grid mode scenes overlapping
fixes #2676
2021-03-08 23:33:54 +13:00
VodBox
58b2da73b3 UI: Fix transform dialog for screen readers 2021-03-08 21:51:20 +13:00
Clayton Groeneveld
753de748e5 UI: Remove redundant code
The UpdateSceneSelection function was doing the same thing as the
code in the SetCurrentScene function.
2021-03-07 22:53:08 -08:00
VodBox
eb98505a2c UI: Fix memory leak with missing files dialog 2021-03-06 15:33:12 +13:00
Matt Gajownik
adb8046b7c UI: Use clicked signal for buttons in Missing FIles dialog
Clicked includes the release, whereas pressed occurs before.
2021-03-05 21:14:56 +11:00
jp9000
09c3892127 UI: Use more accurate wording 2021-03-01 18:28:43 -08:00
Robert de Bock
da8c7e5131 UI: Fix typo
"Ideal" is an absolute.
2021-03-01 15:03:33 -08:00
Doug Kelly
437ba31cf6 cmake: Remove pagezero_size from linker options
Previous versions of LuaJIT required setting linker options
-pagezero_size and -image_base.  This was accomplished in commit
c9224edbad, but as of LuaJIT 2.1, this is no longer necessary, and
doing so results in the application being killed when run natively
on macOS ARM targets.
2021-02-28 19:00:43 -08:00
jp9000
81a89e689f UI: Fix output resolution not properly changing
Fixes a bug where the output resolution wouldn't change when using a
service that uses the "supported resolutions" limitation. When switching
to a non-editable combo box, the signal used to detect whether the combo
box has had its value changed wouldn't work anymore because it was the
signal explicitly used for editable combos. So, to fix, just reapply the
normal combo box signal to detect when the value has been changed.

Fixes obsproject/obs-studio#4124
2021-02-17 03:31:06 -08:00
Gol-D-Ace
7a4844e2fc UI: Fix locale name 2021-02-15 18:16:07 +01:00
Nirusu
2787e63d8e UI: Fix screen resolution for canvas size
In #3988, @RytoEx mentioned that the recent Qt upgrade to 5.15.2
introduced a regression in which Qt begins returning DPI/scaling
aware resolutions for each screen. While this was fixed for
new profiles, this was not reflected in the choice for the
Canvas (Base) Resolution in the Settings screen yet.

This commits fixes this issue, and calculates the correct
physical screen size again, respecting per-screen DPI scaling.
2021-02-12 15:28:26 -08:00
Jim
190ab876cc
Merge pull request #2484 from GeorgesStavracas/feaneron/egl-wayland
EGL/Wayland (Wayland, pt 3)
2021-02-12 01:30:05 -08:00
jp9000
e8a1c082da Revert "UI: Add ability for stingers to use filters"
This reverts commit 36ab7b97cff3bad9f3056b2f3cb1fa6a7158f79b.

The fact that a transition is a composition of two scenes was not
factored into the merging of this PR. Thus, it would apply to the
underlying scenes when transitioning, making the effectiveness of this
feature cause inconsistent rendering of the underlying scenes when
transitions are activated versus when they're not.
2021-02-11 22:34:55 -08:00
Georges Basile Stavracas Neto
e67fdbca79 UI: Check for Expose and PlatformSurface events to create display
This is a workaround for QWaylandWindow never becoming exposed, or
receiving the QEvent::Expose [1].

[1] https://bugreports.qt.io/browse/QTBUG-86176
2021-02-09 09:39:17 -03:00
Georges Basile Stavracas Neto
226cc22669 UI: Make OBSQTDisplay::CreateDisplay() public and allow forcing creation
This will be used by a new event filter, added only when running as a Wayland
client, to force creating the obs_display instance even when not exposed.
2021-02-09 09:39:17 -03:00
Georges Basile Stavracas Neto
b629265e7f UI: Disable and ignore Always On Top on Wayland platforms
This is a dangerous operation on Wayland, and is crashing not only
OBS Studio but also the whole compositor. Let's disable it for now
when running as a native Wayland client.

Some compositors (GNOME Shell, Plasma) still allow setting this
option on the window menu.
2021-02-09 09:39:17 -03:00
Georges Basile Stavracas Neto
f817300cfa UI: Rename callback to match signal name
The sizeChanged callback is connected to the screenChanged signal,
and evidently the naming doesn't match. Rename the callback to
match the signal name.
2021-02-09 09:39:17 -03:00
Georges Basile Stavracas Neto
b71498e8ab UI: Don't create obs_display when QTToGSWindow fails
Right after showing the OBSQTDisplay widget, it may happen that a
wl_surface is not yet created and attached to the window. When this
happens, creating the OBS display results in a crash.

Make QTToGSWindow return a boolean, indicating success or failure, and
don't create the OBS display on failure.
2021-02-09 09:39:17 -03:00