Mike-Solar
0aa5879f35
app: migrate all engine access to the C ABI facade (nm U _ZN5olive = 0)
...
Every app module now reaches liboakengine exclusively through
oakengine_* C calls, EngineEventBridge subscriptions and app-side
handle headers (cliphandle/keyframehandle/nodevaluehandle/oakvaluehelper).
Direct C++ command construction, engine signal connect()s, and engine
type usage in MOC-visible signatures are gone: 557 -> 0 undefined
olive:: symbols in oak-editor.
2026-07-26 22:43:21 +08:00
Mike-Solar
0fe37dba3c
engine: timeline panel batch/composite commands migrate to the facade (part 2)
...
- new primitives: ripple_delete_in_to_out (ripple or gap fill plus
work-area state, one undo command), trim_clips_to (batch edge trim
returning a count), delete_empty_tracks (type-filtered batch), and
marker_remove_many (sparse marker deletion by timestamp array)
- delete-in-to-out, edit-to, delete-all-empty-tracks, and sequence
viewer marker deletion now go through the facade; empty operations
no longer push empty undo entries
- footage viewer marker deletion keeps its app path deliberately
(facade marker handles are Sequences, not generic viewers); the
tentative subtitle track and pointer drag chain stay as documented
leftovers
2026-07-20 13:37:10 +08:00
Mike-Solar
bb40b4923e
style: unify identifier naming per updated conventions
...
Automated with clang-tidy readability-identifier-naming (config added to
.clang-tidy) plus scripted passes, per the updated rules now documented
in CONTRIBUTING.md:
- types (class/struct/enum/alias/template params): PascalCase
- functions, variables, members: snake_case (incl. rational -> Rational)
- private/protected members: trailing underscore; static member
variables likewise (instance_, available_themes_)
- constants and enum values: snake_case (kLinear -> k_linear,
F32P -> f32p); ALL_CAPS reserved for macros
- macros: OAK_ prefix (OLIVE_ADD_TEST/OLIVE_ASSERT/OLIVE_CONFIG ->
OAK_ADD_TEST/OAK_ASSERT/OAK_CONFIG, GL_PREAMBLE -> OAK_GL_PREAMBLE,
include guards -> OAK_*)
- file names: all lowercase (Current/Plugin/OliveHost/OliveClip/
OlivePluginInstance -> current/plugin/olivehost/oliveclip/
oliveplugininstance)
- getters share the member name sans underscore, setters set_foo()
- Qt and third-party (OpenFX) virtual overrides and framework callbacks
keep their original names (exempt in .clang-tidy)
Manual follow-ups required where automation could not reach:
- string-based QMetaObject/SIGNAL/SLOT references updated to renamed
methods (AddTask, CreatedFile, DeleteSpecificFile, moveSelectionUp, ...)
- macro bodies referencing renamed methods (OLIVE_CONFIG,
NODE_DEFAULT_DESTRUCTOR, MANAGEDDISPLAYWIDGET_*)
- self-shadowing locals renamed where signals/methods became same-named
(size_changed, worker_count, selected_items, import param, filters)
- third_party OFX member/namespace usages restored (OFX::Host::*,
_created, _clipPrefsDirty, createInstance, clearPersistentMessage)
- STL protocol aliases restored (const_iterator) with .clang-tidy
ignore rules; qHash overloads restored
Full build and test suite pass: ctest 4/4, ~1960 gtest cases green.
2026-07-19 16:10:54 +08:00
Mike-Solar
004e942cf9
fix: remaining issues recorded during test coverage work
...
- RenderManager: GPU-side members (context_, decoder_cache_,
shader_cache_, auto_cacher_, worker_pool_, decoder_clear_timer_) were
left uninitialized when the configured graphics backend is unknown
(e.g. dummy); ViewerWidget then dereferenced garbage and crashed.
Initialize them at declaration
- CurveView::SelectKeyframesOfInput ignored its reference parameter and
selected keyframes of every connected track; select only the
requested track's keyframes
- SeekableWidget::SeekToScenePoint dereferenced GetViewerNode()
unconditionally; skip the playhead update when no viewer is connected
- LoadOTIOTask: unknown root schema leaked the freshly allocated
project_ (delete + reset; OTIO is not enabled in local builds so this
file is compile-verified by inspection only)
Locked by new tests: RenderManagerDummyBackend,
TimeRuler.SeekToScenePointWithoutViewerIsNoOp,
CurveViewTest.SelectKeyframesOfInputSelectsOnlyRequestedTrack
2026-07-17 17:20:50 +08:00
Mike-Solar
bfb1b2fce4
update copyright back
2026-01-16 21:22:05 +08:00
Mike-Solar
b8669f6a11
Change project name;
2026-01-05 16:22:26 +08:00
Mike Solar
6fdfd03ffd
update: update copyright
2025-08-05 17:12:49 +08:00
Mike Solar
74f73ab3be
change: change code style to Linux style except indent.
2025-08-03 03:09:40 +08:00
itsmattkc
2c2df99963
name every undo command
2023-03-12 00:49:03 -08:00
itsmattkc
019f095ee4
implement history panel
2023-03-11 22:26:21 -08:00
itsmattkc
3e47da7009
timebasedviewselectionmanager: scale/unscale when dragging too
2023-03-11 13:49:41 -08:00
itsmattkc
9824760ce1
Merge branch 'master' into move-serialization
2023-02-28 20:40:40 -08:00
itsmattkc
9ff6e689d6
vastly improved rubberband selection behavior with selection manager widgets
2023-02-28 20:21:38 -08:00
itsmattkc
7ec8a4dd7e
serializer: ensure backwards compatibility
2023-02-26 15:42:54 -08:00
itsmattkc
11e4e051c3
move undo files around for better organization
2023-02-20 16:09:22 -08:00
itsmattkc
d164a9a59a
seekable: prioritize dragging playhead over workarea
2022-11-18 10:50:07 -08:00
itsmattkc
eae02ac28b
prioritize dragging markers over workarea
2022-11-18 10:35:51 -08:00
itsmattkc
b33260dce8
timebased: only snap to workarea if enabled
...
Fixes #2106
2022-11-18 10:30:18 -08:00
itsmattkc
451de7030b
Merge branch 'move-time-to-viewer'
2022-11-01 18:20:22 -07:00
itsmattkc
d52d5b13b2
seekablewidget: allow rubberband select while holding ctrl
...
Fixes #2061
2022-11-01 12:48:48 -07:00
itsmattkc
bdbfb56879
shift timelineview scroll code into base classes
...
Fixes #2060
2022-10-24 12:01:47 -07:00
itsmattkc
d1545745d8
various: moved time from viewer UI to viewer node
2022-10-23 20:56:04 -07:00
itsmattkc
32a1d31bc0
seekablewidget: add hand move events
2022-07-27 12:44:50 -07:00
itsmattkc
0e6ebee827
exportdialog/timeruler: disable marker and workarea editing
...
Fixes #1979
2022-07-23 09:59:18 -07:00
itsmattkc
46be693b3e
timeline: show marker text even on markers without range
2022-07-19 11:21:06 -07:00
itsmattkc
24ae3a25d3
timeline: use scroll cooldown when dragging playhead
2022-07-16 17:12:35 -07:00
itsmattkc
079d6beff2
timeline: separate markers and workarea
2022-06-27 23:39:31 -07:00
itsmattkc
0fc6ab149f
timeruler: fixed scroll regression
...
Fixes #1960
2022-06-21 10:26:19 -07:00
itsmattkc
52db848918
ui: draw in/out semi translucent
...
Fixes #1957
2022-06-20 10:26:16 -07:00
itsmattkc
18d10f6c8d
widgets: unset cursor rather than setting arrow
2022-05-12 13:39:59 -07:00
itsmattkc
78d5314c0a
seekablewidget: don't allow deleting if dragging
...
Fixes potential crash if a user does this
2022-05-11 13:44:59 -07:00
itsmattkc
7c12b6dc16
updates for C++17
2022-05-11 10:50:47 -07:00
itsmattkc
182e1599af
keyframes: implemented copying/pasting
2022-05-10 15:42:09 -07:00
itsmattkc
4b366a9b73
update copyright year to 2022
2022-05-10 10:38:56 -07:00
itsmattkc
0f99d8a662
timeruler: add ability to resize markers and workarea
2022-05-09 17:53:21 -07:00
itsmattkc
6e4cb02ac2
seekablewidget: reimplement 0 limit on seek
2022-05-02 16:07:35 -07:00
itsmattkc
e6d4fe43de
reworked and vastly improved snapping subsystem
2022-05-02 00:01:49 -07:00
itsmattkc
f7396de121
markers: reimplemented copy/paste
2022-05-01 22:33:58 -07:00
itsmattkc
6a0b5856c9
various: extended marker and timeline functionality
2022-05-01 21:17:22 -07:00
itsmattkc
cdcd83c09a
ported seekablewidget to timebasedview
...
Cuts down on a lot of code duplication and opens up usage of the new TimelineViewSelectionManager framework
2022-05-01 15:45:20 -07:00
Thomas Wilshaw
e606c156c5
Cleanup for review
2021-11-09 11:59:29 +00:00
Thomas Wilshaw
c8552ad184
Make moving a marker undoable
2021-10-22 22:15:56 +01:00
Thomas Wilshaw
d04d165451
Add safety checks to DeslectAllMarkers()
2021-10-22 22:15:56 +01:00
Thomas Wilshaw
87b66e0cbb
Make renaming markers undoable
2021-10-22 22:15:56 +01:00
Thomas Wilshaw
5c7073eab6
Make changing marker color undoable
2021-10-22 22:15:55 +01:00
Thomas Wilshaw
7af6f85a7c
Move marker undo code to seperate file
2021-10-22 22:15:55 +01:00
Thomas Wilshaw
1a7f821d82
Make markers movable
2021-10-22 22:15:54 +01:00
Thomas Wilshaw
f3e025c729
Improve marker selecting
2021-10-22 22:15:54 +01:00
Thomas Wilshaw
3840c5158d
Improve widget resizing
2021-10-22 22:15:54 +01:00
Thomas Wilshaw
bf4459cbc7
Add labels to makers
2021-10-22 22:15:53 +01:00