Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deselect Timeline's item on mouse click #3317

Closed
wants to merge 1 commit into from

Conversation

SuslikV
Copy link
Contributor

@SuslikV SuslikV commented Mar 24, 2020

  1. Add ability to deselect items on mouse click if already was selected and Ctrl key is pressed.

  2. Fixes: Weird behavior with Ctrl + Right Click after selecting multiple items on timeline #2911
    Do not clear selection if multiply items selected. Fixes an issue where context menu over the multiply items selected shows only single item selected menu (unlike the mouse rectangle selection, where all is OK).
    Next part of the code (and similar change to the transition's code) fixes the issue itself:

// Do not clear selection if CTRL is pressed
if (is_ctrl)
	timeline.addSelection(id, "clip", false);
else
	timeline.addSelection(id, "clip", clear_selections);
  1. Remove all unused SelectEffect() call with two arguments. Rudiment of old changes.

Now Transitions + Clip selection with the Ctrl pressed acts similar to the rectangle selection by mouse move (no deselection of either transitions or clips).

@ferdnyc
Copy link
Contributor

ferdnyc commented Mar 27, 2020

Sweet, thanks @SuslikV this will be great to have! I'll try to get it tested tonight.

Copy link
Contributor

@ferdnyc ferdnyc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This works nicely, and it really does make the Timeline more usable.

There's a bit of weirdness regarding the hover state for clips, the timeline can get into a state where hovers become sort of laggy (Like, I can see the border blinking out completely for a split second, then coming back again), and sometimes hitting Ctrl while it's doing that doesn't register — but I compared with 2.5.1 and the hover weirdness is present there, too, so I'm sure it's a preexisting issue that has nothing to do with the code in this PR.

A few style comments and minor suggestions, but overall LGTM.

Comment on lines 676 to 679
// Is CTRL pressed?
is_ctrl = false;
if (event && event.ctrlKey)
is_ctrl = true;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since you inserted this here, you should remove it from lines 699-702, which is now redundant.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not. Event is processed on call. And if SelectTransition() is called in between then global variable is rewritten. I can rewrite it of course with var. What do you think?

Comment on lines 737 to 740
// Is CTRL pressed?
is_ctrl = false;
if (event && event.ctrlKey)
is_ctrl = true;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto here, redundant with lines 760-763. Despite the weird indentation (and all the JavaScript is definitely full of crazy indentation), it's all the same method.

Comment on lines 682 to 686
if (id != "" && clear_selections) {
$scope.SelectTransition("", clear_selections);
$scope.SelectEffect("", clear_selections);
if (is_ctrl)
$scope.SelectTransition("", false);
else
$scope.SelectTransition("", true);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Calling $scope.SelectTransition("", false); should have no effect (since SelectTransition("", true) is just meant to force-clear all transition selections), can it just be eliminated? i.e.

if (id != "" && clear_selections && !is_ctrl) {
  $scope.SelectTransition("", true);
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is for:

Now Transitions + Clip selection with the Ctrl pressed acts similar to the rectangle selection by mouse move (no deselection of either transitions or clips).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, optimization can be made.

Comment on lines 707 to 727
if ($scope.Qt) {
timeline.removeSelection($scope.project.clips[clip_index].id, "clip");
}
if ($scope.Qt)
timeline.removeSelection($scope.project.clips[clip_index].id, "clip");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd really prefer not unnecessarily removing curly braces. It just makes the code harder to maintain (now, if someone wants to insert another statement there, they have to re-add them — and if they forget, the code will not work the way they expect), and the noise of removing them makes the PR harder to read.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(My personal preference with curly braces would be that they're always used, even for one-line body blocks. And in my PRs that's generally how I write new code. But I'm not going to try to impose that on anyone else.

By the same token, though, I'd request that the braceless-blocks style not be imposed either, when it comes to code that's not otherwise being worked on.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is harder to read the code with all this brackets (as for me). But I can leave all them in place if it's so important and even add few new.

Comment on lines 744 to 747
if (is_ctrl)
$scope.SelectClip("", false);
else
$scope.SelectClip("", true);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as earlier, can the is_ctrl === true branch be eliminated entirely?


// Unselect all clips
// Unselect all clips
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment no is no longer accurate, since it will depend on is_ctrl.

Suggested change
// Unselect all clips
// Update selection state for clips

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was never accurate because it was conditional.


// Unselect all transitions
// Unselect all transitions
Copy link
Contributor

@ferdnyc ferdnyc Mar 27, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// Unselect all transitions
// Update selection state for transitions

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops, nice cut-and-paste work there. Lemme fix that...

@@ -671,83 +670,122 @@ App.controller('TimelineCtrl',function($scope) {

// Select clip in scope
$scope.SelectClip = function(clip_id, clear_selections, event) {
Copy link
Contributor

@ferdnyc ferdnyc Mar 27, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The name clear_selections for the parameter here seems really confusing, in the context of this new functionality, since it won't clear selections when Ctrl is pressed. So, that's not really what it means anymore.

It would probably make the code more readable if we gave it a new name that better describes its function. What do you think of exclusive? That way, it doesn't preclude is_ctrl overriding it (well, not as much, anyway). It just says that if it's selecting a clip, that clip should be the only one selected.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Same in SelectTransition(), I'm not going to bother with a second comment.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This name should correlate with the Python part of the code (where it used as clear_existing):

@pyqtSlot(str, str, bool)
def addSelection(self, item_id, item_type, clear_existing=False):
""" Add the selected item to the current selection """

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. We should change it there, too.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope. It is OK there. Changes not required.

Comment on lines 705 to 711
for (var clip_index = 0; clip_index < $scope.project.clips.length; clip_index++) {
if ($scope.project.clips[clip_index].id == id) {
$scope.project.clips[clip_index].selected = true;
if ($scope.Qt) {
timeline.addSelection(id, "clip", clear_selections);
// Invert selection if CTRL is pressed and not forced add and already selected
if (is_ctrl && clear_selections && ($scope.project.clips[clip_index].selected == true)) {
$scope.project.clips[clip_index].selected = false;
if ($scope.Qt)
timeline.removeSelection($scope.project.clips[clip_index].id, "clip");
Copy link
Contributor

@ferdnyc ferdnyc Mar 27, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like is_ctrl can be hoisted up out of all of this, since ultimately when Ctrl is pressed, you don't want to do anything to any of the clips except the one involved in the selection click event. So it might make the logic simpler to follow if we just get that out of the way first thing:

for (var clip_index = 0; clip_index < $scope.project.clips.length; clip_index++) {
    if (is_ctrl && $scope.project.clips[clip_index].id !== id) {
      // Don't select/deselect any other clips, if Ctrl is pressed
      continue;
    }

That'll skip the entire rest of the loop body for every clip except the one we're interested in, and it hopefully makes the rest of the block a bit simpler too.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optimization? @ferdnyc , code even wasn't accepted yet, and you already making second improvement. Where you've been before?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right now I'm not seeing this as an improvement. Ctrl is rarely pressed. Simple click (or right click) is far more often operation in the Timeline over the items.

@ferdnyc ferdnyc added the interface GUI / user interface issues (i.e. windows, buttons, scrolling, pop-ups, etc...) label Mar 27, 2020
@SuslikV
Copy link
Contributor Author

SuslikV commented Mar 27, 2020

Tabs or Spaces as indentation? What to use here?

@SuslikV
Copy link
Contributor Author

SuslikV commented Mar 28, 2020

Added: curve brackets everywhere, minor optimizations, co-author.

@ferdnyc
Copy link
Contributor

ferdnyc commented Mar 28, 2020

Tabs or Spaces as indentation? What to use here?

That file is such a formatting nightmare, it feels like every answer to that question will be wrong.

We should really settle on a set of basic repo standards and define them in an .editorconfig.

My preference for both JS and HTML would be two-space indents, so the code doesn't get too wide. But I'm pretty flexible on that. I'd just like to settle on SOME standard.

@SuslikV SuslikV changed the title Deselect Timeline's item on mouse click WIP: Deselect Timeline's item on mouse click Jun 5, 2020
@SuslikV
Copy link
Contributor Author

SuslikV commented Jun 5, 2020

Base branch was updated, I will update the code later.

@SuslikV SuslikV force-pushed the patch-12 branch 4 times, most recently from c0dd314 to cba4fc0 Compare June 12, 2020 13:42
@SuslikV SuslikV changed the title WIP: Deselect Timeline's item on mouse click Deselect Timeline's item on mouse click Jun 12, 2020
@SuslikV
Copy link
Contributor Author

SuslikV commented Jun 12, 2020

Updated on top of the current develop.

1) Add ability to deselect items on mouse click if already was selected
and Ctrl key is pressed.

2) Do not clear selection if multiply items selected. Fixes an issue
where context menu over the multiply items selected shows only single
item selected menu (unlike the mouse rectangle selection, where all
is OK).

3) Remove calls to no longer existing selectEffect() function with two
arguments.

Co-authored-by: Frank Dana <ferdnyc@users.noreply.github.com>
jonoomph added a commit that referenced this pull request Sep 11, 2020
@jonoomph
Copy link
Member

Closing PR, addressing in another PR: #3715

@jonoomph jonoomph closed this Sep 11, 2020
clrpackages pushed a commit to clearlinux-pkgs/openshot-qt that referenced this pull request Sep 21, 2021
…on 2.6.1

Brad Kartchner (1):
      Added error handling to Preset and Profile file reading operations

Brenno (60):
      added preprocessing dialog window
      Added better integration with stabilizer effect
      added comunication with CV processing effects
      Merged with dynamic effects UI dialog
      Added interval to apply OpenCV effects
      Added integration with Object Detector effect
      Fixed objectDetection wrong file path
      fixed bug with effects when cutting a clip
      Error handler for OpenCV effect not compiled with library
      minor fixes
      Fixed effects bug on cut clips
      Changed protobuf saving path and check OpenCV compatibility
      Error handler for OpenCV effect not compiled with library
      Branch for merging with new-webengine-suppor
      Correction bad path in pre-processing effects
      Fixed file that was changed after merging with webengine branch
      removed unnecessary file
      opencv path added for windows 64 build
      opencv path added for windows 32 build
      small webengine fix
      Improved error handling for effect pre-processing
      Added transform handler for Tracker effect
      Disabling region selection after closing window Initialize Effect
      Changed Json interface that updates the Tracker effect
      Added support for rotation transform to the bounding-box and to the transform handler for the tracker effect
      Added support for rotation to the transform handler for the tracker effect
      Small fix - print removed
      Added mini-GUI to attach a clip to a tracked object
      Minor fixes to the attached object property
      Fixed clip transform handler when attached to object
      Added support to attach clip to detected object (ObjectDetection) effect
      Added support to update the detected bounding-boxes keyframes
      ObjectDetection: show object's icons and transform handlers per frame
      Added support to show the transform handler for the selected object
      ObjectDetection: updated object selection and transform handler
      Added support to attach a clip to another clip
      Updated variable names
      Added support to set the visibility of a Tracked Object
      Added support to insert the image of a clip inside a Tracked Object
      Added support to set an effect's properties by it's parent effect
      Fixed bounding box offset when selecting an object to be tracked
      Fixed cache delay when moving the Tracker Transform Handler
      Fixed bounding box selection on portrait videos
      Using normalized initial bounding box for Tracker effect
      Protecting from missing attributes
      Fixed Transforming handler shape mismatch for Tracker effect
      Removed the single "Clips" menu level
      Changed default ObjectDetection default path for required files
      Prevent crash when no object was detected on a clip
      Code review
      Changed JSON communication for detected objects
      Fixed dict update
      Improved speed when interacting with transform handlers
      Simplified if statements
      Changed method name to set_property
      Keeping compatibility with older python versions
      Reverting dictionary optimizations
      Added audio effects tab
      Added audio effect icons
      Bug fix. Prevent adding the same clip as child in the Tracker and Object Detection Effects

Brenno A. C. Caldato (1):
      Apply suggestions from code review

Dave Scotese (1):
      windows installer: Expand firewall-rule option (#3736)

FeRD (1):
      Credits: Fix data model

FeRD (Frank Dana) (236):
      Simplify Unity Launcher logic
      launch.py: Add a --path arg to set PYTHONPATH
      WIP: New add/remove track implementation
      Blender: Capture stderr, log output
      Docs: Don't default-enable Google Analytics
      Sync add_file() in file views
      timeline_webview: Formatting & cleanup
      timeline_webview: Reduce indirection
      timeline_webview: .format() JS calls
      timeline-webview: Rewrap lots of long lines
      New AppRun linux binary with OPENSSL_CONF
      Changes to build-server for new AppRun
      classes.info: Use current year in COPYRIGHT
      Fix shortcuts: Edit Title, Duplicate Title
      main_win: Drop thumbnail code, expand bare logs
      Use security-patched defusedxml, if available
      Add script to modify HW libs in AppImage
      Use mangle-hw-libs script on Linux builder
      Update Python module paths on Win builder
      mangle-hw-libs: No realpath command on builder
      emojis: A bunch of model/view tweaks
      Restore drag pixmap
      Remove debug logging
      Blender: Don't silently discard exceptions
      Blender: Clean up imports, fix class init
      Blender: Streamline XML parsing, free dom object
      Blender: Go back to bytes, for command output
      Free xml.dom.mindom parsers when finished
      Blender: Use self.process consistently
      Blender: Fix filename join
      Picture Frames: Remove "Path" from file labels
      Add SliceSelected shortcuts to settings
      Implement "Slice Selected" shortcut bindings
      main_window: SPEL WURDZ RITE
      classes.info: Handle missing PyQt5
      Add Actions workflow to build docs with Sphinx
      json_data: Fix path_regex
      files views: Fix updateSelection()
      files views: Reconcile common code, use super()
      Fix unity import
      Models: Persistence enhancements
      Eliminate main_window's self.selected_files list
      Files: Move add_file, get_image_seq() into model
      Fix dragging for all views
      Fix "Edit Title" action
      Properties: Use main data models for context menu
      Add --test-models flag to launcher
      Blender: Use files model add_files()
      Titles: Use files model add_files(), new counter
      main_win: Remove actionImportImageSequence_trigger
      translations: Use OpenShot_locale.qm file names
      Tutorial: Process Esc key as a QAction
      Titles: Don't pollute temp dir with title previews
      Add new OSP icon, install & use
      windows/tutorial: Codacy, positioning
      Allow Travis failures on Xenial
      Revert "Updating travis cx_Freeze to 5.1.1, to match build server"
      timeline: Don't interpolate getThumbPath in ng-show
      timeline: Add qt_log2, now with log levels
      Timeline: Sprinkle "DEBUG" log level liberally
      Reindent Timeline-HTML HEAD
      build-server: Fix Codacy issues
      Fix issues flagged by Codacy
      freeze.py: `del` unused variable
      main_window: Code fixup
      Fix qt_log2 callable
      Main Window: Add View > Docks submenu
      timeline: Rename qt_log2() to qt_log()
      Drag-and-drop: Recursive folder imports
      File import: Don't abort on existing file
      Revert "freeze.py: `del` unused variable"
      New formats for the logging instances
      add_selection: Only log clears when debugging
      run_js: Increase timer to 200ms, better logging
      timeline_webview: Make a lot of logs debug-level
      Update compiled resource file
      Move openshot_rc.py to classes/
      Move images in resource file out of src/
      Import openshot_rc before loading UI files
      Update .qrc file paths in .ui files
      query_tests: Remove openshot.png dependency
      Put back some icon dependencies
      Update icon resource file
      Use resource file for curves, cursors
      About: Support new changelog format
      Use action-delay QTimers right
      properties_tableview: Format, unused vars
      Fix mangle-hw-libs workdir path
      Fix lib mangling for real
      Add libvdpau.so.2 to mangled libs
      timeline-mixins: Enable WebEngine JS logging
      timeline-mixins: Enable WebEngine JS logging
      Raise an exception if neither backend found
      Rework backend importing for timeline
      Rename timeline view modules
      Fix thread shutdown
      Stupid typo
      Misc code cleanup
      Set up JS logging for both backends
      Fix MainWindow parenting
      TIL that QMainWindow's parent must be a QWidget
      webengine backend: Import logging levels
      add_track: Fix track number lookup
      controllers.js: Don't dereference unknown objects
      timeline: Fix HTML source processing
      Don't call setInterval() with float args
      tab=>spaces
      Load QtWebChannel JS from Qt resource system
      Create Python threads as .daemon = True
      WebKit: Don't inject mainWindow into JS (not used)
      Delete unused timeline/media/images files
      AudioThumbnail.png => AudioThumbnail.svg
      timeline: Eliminate playheadOffset
      WebKit backend: Fix LoggingWebKitPage call
      Make use of new Timeline lookup APIs
      Teach Prev/Next Marker to jump to 0, end
      logger: Save original stdout/stderr
      video_widget: Fix typo, unused vars
      Properties model: Make most logs debug
      Blender: Animation-Length fixes
      Blender: Misc cleanup
      Blender: Pass preview_frame, fps values to scripts
      Blender: Trigger rendering from command line
      Blender files: Update physics templates
      Animated titles: Source/imports cleanup
      Move Blender version check to separate function, rework subprocessing
      Blender: Eliminate initial script copy, make preview timer single-shot
      Blender: Add inter-frame progress display
      dissolve/explode titles: streamline, update code
      Blender: Create thread/worker per-transaction
      blender_listview: Fix Codacy issues
      blender: Script updates for magic_wand.py
      blender: Script updates for neon_curve.py
      blender: Script updates for earth.py
      blender: Script updates for colors.py
      Blender: Use JSON serialization to inject params
      Blender: Protect embedded params
      project_data: New keyframe scaler implementation
      files views: Accept drop event before processing
      Fix lots of action signatures (no 'event' param)
      Explicitly accept() more events, use menu.popup()
      files_model: import better, progress in statusbar
      Playback: Fix bug with starting play in reverse
      preview_thread: Fix up logging
      properties: Remove context menu lock, speedups
      main_window: '[get_]app.window.…' => 'self.…'
      Housekeeping: Eliminate all star imports, etc.
      properties_tableview: Fix imports
      Remove unnecessary openshot_rc imports
      Incorporate changes from 'develop'
      main_window: Correct webview import path
      Address Codacy flags
      webengine backend: Fix dumb mistake
      webview: Swap parents, connect aboutToQuit signal
      thumbnail: Add some logging
      app: Cleanup w/o relying on return from exec_()
      Settings: Move QMessageBox, get_settings() to app
      webview: cache logging, drop local settings ref
      main_window: actionJump logs => debug
      Profile: Seek to first frame on change
      Blender: Make color-picker dialog non-modal
      Add ColorPicker dialog with checkerboard alpha
      Export: some init cleanup, add *args, **kwargs
      Animated titles: Add *args, **kwargs
      Animated titles: Use ColorPicker
      Properties: Use ColorPicker
      Title editor: Use ColorPicker
      Titles: Rewrite XML parsing/mods, add style_tools
      Make sure font family is single-quoted in HTML
      Cutting: Don't accept() close event
      Properties model: Use new effect.ParentClip()
      Remove title text from report templates
      ISSUE_TEMPLATES: Fix wrapping
      CONTRIBUTING: Style cleanup
      Restore translated strings
      project_data: Remove unused function
      keyframe_scaler: Rename to _scale_x_value
      freeze.py: Exclude remaining glib2 libs
      Add CI_PIPELINE_ID to metadata file
      build-server: Update metadata file parsing
      Use CI_PIPELINE_ID in package filenames
      Relocate libopenshot.log recovery to exceptions.py
      Timeline CSS: More visible keyframe marks
      Title Editor: Model & program flow tweaks
      TitleEd: Use style-tools more, drop find_in_list
      Add __init__.py files to all python paths
      Add __init__.py to parent paths as well
      Blender: Rename source scripts to .py.in
      Webview: Show menus with exec_()
      Drop keyframe points down into track gutter
      Timeline: Add some keyframes to debugger clips
      Blender: Tweak dissolve.py parameters
      Remove signal cxn causing double unsaved prompts
      Eliminate Ubuntu Unity integration
      Preferences: Don't filter file dialog
      Update copyright in README
      Revert "Test bumping the version (for gitlab-ci deployment testing)"
      Fix metrics/exceptions/settings circ. dependency
      Settings: getter -> cl.app; housekeeping
      App: re-work launching, detach GUI from app
      tests/query_tests: Run unit tests without GUI
      Fix traditional logging calls
      Pass standard Qt args through to QApplication
      README: Add repo name to workflow job title
      App: Consume error queue to avoid repeats
      build_server: Code-formatting/readability fixes
      Windows builder: mingw32\mingw32\ => mingw64\mingw32
      Look up Python ABI version, instead of hardcoding
      Gitlab-ci: Make PY_ABI an envvar on Windows
      Gitlab-CI: Fix use of PowerShell variables
      Gitlab-CI: Add PyQt5 back to PYTHONPATH, crazily
      Small change to github3 API
      deploy.py: Reformat long lines
      Munge command strings with shlex
      Fix editbit command
      Handle multiple github3 versions
      Rename version_info files to NAME.env
      Fix env-file parsing
      Freeze: Include OpenGL/OpenGL_accelerate on Win32
      app: Move dark palette generation to ui_utils.py
      Eliminate settings.get_settings
      CI: Run unit tests without xrdb
      classes.timeline: Remove unused settings ref
      Don't redefine 'min'
      ui_util: Code cleanup
      Unit tests: Add test for filter(intersect=)
      classes.query: Don't hold reference to app.project
      Unit tests: Import query classes at top of file
      Add classes.sentry to manage sentry_sdk
      Don't fail on unavailable sentry_sdk, distro
      Use HTTPS for Google Analytics
      README: Update libopenshot instructions
      classes.sentry: Restrict distro use to Linux
      launch: Fix --list-languages
      unit tests: Rename test class, use inheritance
      Update json_data.py

Frank Dana (74):
      json_data: Correct for lost slashes, pre-repair (#3267)
      Filter properties using localized label (#3292)
      AppImage: Set OPENSSL_CONF for newer openssl compat (#3283)
      Second attempt at AppImage fix (#3304)
      Move manual logo to xdg dir (#3320)
      mangle-hw-libs.sh: Remove math expression (#3344)
      Title editor: Convert opacity to QColor alpha level (#3331)
      dissolve.py: Keep track of particles for duration (#3353)
      classes.app: Set icon, desktop file (#3354)
      Titles: Re-establish user template location (#3376)
      freeze.py: Add paths to moved Windows DLLs (#3390)
      Docs: Add Sphinx directive for youtube embeds (#3394)
      README: Update copyright to 2020 (#3400)
      File Properties: Raise profile of JSON data dump (#3441)
      export: Correct PyQt5 imports (#3480)
      files_treeview: Fix context menu view switching (#3495)
      Toggle fullscreen without losing other state (#3501)
      transitions model: Look up groups via sibling() (#3511)
      export: Actually import ExpatError (#3529)
      About: Use BOM to decode UTF-16 changelog file (#3601)
      Travis: Downgrade to cx_Freeze 6.1 (#3607)
      timeline css: Fix bad color value (#3606)
      Add --debug flag(s) to launch.py (#3539)
      app.js: Pass event object to keyup handler
      Travis: Add Ubuntu Focal (Python 3.8) build (#3621)
      Fix debug log for changelog parsing
      Fix lockfile logic (#3648)
      Add libselinux.so.1 to package allow list (#3661)
      title editor: Fix name-duplication regex (#3637)
      Fix mangle-hw-libs workdir path (#3679)
      Update timeline_mixins.py
      COPYING: Fix line wrapping in Exceptions section (#3692)
      Travis: Re-enable QtWebKit for Xenial builds (#3701)
      Fix large canvas rendering (at closest zoom levels), with WebEngine (#3711)
      dissolve.py: Correct end_frame value
      files_model: Fix any() call (#3753)
      Tweak doc/titles.rst
      Update due to changes in 'develop'
      Formatting tweaks
      Fix dumb typo
      main_window: Add missing QUrl import (#3775)
      Work around PyQt5 bug with argument types (#3776)
      Work around PyQt5 bug with argument types (#3777)
      app.py: Remove distutils import (#3778)
      Properties: Fix transition property lookup (#3789)
      Blender: Always show error msg, close window after (#3790)
      Fix MainWindow inheritance (#3809)
      Add ColorPicker dialog with checkerboard alpha (#3813)
      Title templates: Make all transparent bgs black (#3814)
      CONTRIBUTING: Update instructions/details
      Dumb typo in the menu code (#3829)
      CONTRIBUTING: Fix Windows paths (backslash)
      Create label-merge-conflicts.yml (#3850)
      Upgrade label-merge-conflicts action to version 2.0.1 (#3851)
      Label merge conflicts: lower retry delay, raise retry count (#3852)
      webkit: No f-strings with Python 3.5 (Xenial)
      doc/clips.rst: Update image path
      Add .css files to .editorconfig (#3919)
      Github Actions CI building (#3901)
      TimelineWebView: Log WebKit import fail reason (#3883)
      Restrict label-conflicts to branch pushes (#3921)
      Add Dependabot checking for Actions (#3935)
      main_window: Separate model/view init (#3911)
      README: Remove Travis build shields
      README: Add Github Actions status badges
      CI: Ignore Ubuntu 20.04 failures (#4076)
      Don't set fractional values for int properties (#4068)
      Gitlab builders: work around github3 API differences (#4109)
      CI: Switch to -platform minimal
      Revert "CI: Ignore Ubuntu 20.04 failures (#4076)" (#4121)
      Logging overhaul, to solve issues caused by stdout/stderr redirection (#4175)
      AppStream metadata: update content ratings (#4105)
      src/classes/query.py: Fix indentation
      Don't kill the WebView on aboutToQuit (#4174)

Guido de Caso (1):
      Correction to the title template directory.

Jackson (66):
      Fixed. Removing Debug Statements
      Removed openshot_qt folder
      Removed Debug Statements
      Ignoring openshot_qt
      Don't check event.shiftKey if event doesn't exist
      removed broken index
      Use full length project names, and update shortened if exists
      commented for future reference
      doesn't look for abbreviated folder until it looks for long version
      Changed move to Copy
      use path not folder name
      Comments for clarity
      Removed a redundant blank line
      Missed a line
      Don't make paths to other drives relative
      Default to empty list
      Check for windows drives after covering other cases
      Removed executable permissions from the xdg desktop file
      strictly move slider with mouse
      Don't go past min distance on shift-zoom
      Add default case form move_clips
      Mirrored changes on transitions
      listen for mouseleave to end dragging
      Coppied changes from playhead-bug branch
      Cleaned up leftover code for PR
      removed a console.log
      Changed 'tick_time' to 'ruler_time'
      Fixed an error that caused the times to be off by 50px
      Formatting
      fixed webkit compatability
      Tried matching shades, and showing preview bar
      Coppied changes from playhead-bug branch
      Cleaned up leftover code for PR
      removed a console.log
      Changed 'tick_time' to 'ruler_time'
      Fixed an error that caused the times to be off by 50px
      Formatting
      fixed webkit compatability
      Tried matching shades, and showing preview bar
      show frame numbers if scrolled in less than 1
      removed minimum zoom factor
      first try drawing on frames
      WIP saving
      draw tick marks but overlaps sometimes
      Well tested prime factoring
      Save primes as they're found
      Time marks stay when you scroll
      get correct timeline length
      Fixed treating adding y_offset to x
      force ruler to draw
      Cleanup
      Allow mousewheel zoom on webengine
      Fix middle click drag, and ruler jitter
      Ruler show correct frame number
      codacy, and redraw on resize
      codacy changes
      codacy comparison
      fixed scroll direction
      formatting if statement
      Update version to 2.6.0; Requires libopenshot 0.2.6 SO 20
      Merge master 2.6.0 into develop
      Switch to next text field on tab press
      save paths as valid json
      repair project files with invalid json for paths
      Moved regex to read file
      Remove blank line

JacksonRG (3):
      default ignore_ids to an empty object
      Return cleaned path as JSON object
      added guards where we were getting exceptions (#4210)

Jonathan Thomas (310):
      Bump version to -dev2 (merge master back to develop)
      Fixing syntax error
      Allow *.osp project files to be imported as a Clip. Better handle unknown "media_type"'s.  Trigger "has unsaved changes" when clearing history from a Project, so the user can immediately save the *.osp file without history.
      Initial checkin of emojis in OpenShot! Added new model/view/ui elements, and a handful of test emojis from OpenMoji.
      Convert transitions model to use proxy filter and sort class, with custom sort and filter function (which takes into account the group: common, extra, user) and the filter text. Also, moved the models outside of the widgets for Effects, Transitions, and Emojis.
      Convert effects model to use proxy class for sorting and filtering.
      Convert files to use new proxy class, and a global shared model. No longer delete the tree/list view widgets either. They both always exist, and share the same data, and toggle visibility back and forth. Added wait cursor when adding/importing files.
      Convert transitions to no longer delete widgets, but rather create both with a shared model, and toggle visibility to the user.
      Convert effects to no longer delete widgets, but rather share a model, and toggle between list and tree view.
      Process qt events every 2 files added (so emoji doesn't glitch when adding to timeline)
      Added emoji group drop-down filter, to better sort and filter, and a custom Proxy class for filtering. Also enabled locale aware sorting on listview and treeviews.
      Adding @emojis path replacement, when saving and loading *.osp files. This allows them to be cross-platform paths, and relative/magic paths for OpenShot which always work.
      Adding emojis to translation template. Splitting "transitions" and "emojis" into separate templates though, since there are thousands of them, and they are not critical for OpenShot to be usefully translated.
      Adding emojis from open-moji project.
      Integrated proxy class into models, and only refresh proxy on ListViews (since treeviews share the proxy model, they already get the updates)
      Adding cache for emojis (for fast loading of icons)
      Adding cache for emojis (for fast loading of icons)
      HUGE overhaul of the transform tool.
      Create 8 custom cursors, white middles with black stroke, for Transform tool. Added custom cursor rotation, as the transform is happening in real-time. Feel great, very polished.
      Fixing emoji listview currentIndexChanged connection, since it passes an INT also
      Hack to fix Travis failure
      Updated emoji model proxy filter to be waaay faster, using Qt regex.
      Protect cursor when transform is happening, so it doesn't keep switching cursors during a drag. Fix shear_left and shear_top to take scale into account.
      Updated shear and rotation logic to use Keyframable origin point (x,y). Both shear and rotation need to know the origin, and share the origin point. Updated center origin display to a circle with a cross through it.
      Adding new hand cursor for the origin point
      Adding auto-transform selection feature, where selected clips automatically enable the transform tool. Defaults to 'false' for now.
      Removing extra emojis for performance reasons
      Added script to "optimize emojis" and remove extra/unused ones, and updated translations to only use optimized emojis. This results in 936 emojis shipped with OpenShot, and less translations, faster loading, etc...
      Updating cache, removing many cached emoji
      Shortening 'group filter' name for emojis to 1-word, updating translations to match
      Split out blender translations into it's own POT template
      Fixed rotation transform logic to correctly adjust around the origin point (in viewport coordinates).
      Updating all 4 translation templates
      Adding 'translator-credits' to additional POT template files
      Adding filter group to emoji tooltip
      Updating translation tester script for multiple POT templates
      Fix saving/loading selected emoji filter group
      Prevent crash on launch during a backup.osp recovery
      Adding no-cache paramater support for thumbnail HTTP server, so it will ignore cache and re-generate a thumbnail image
      Add new signal for updating a file (such as editing a title), that results in the files_model updating the thumbnail, updating the name, and/or updating the tags.
      Fixing regresion from https://github.com/OpenShot/openshot-qt/commit/41e7a354dc1c333c7bcaf5df560d6f67211219e3, where a comma turned into a period, breaking our ability drop a file on the timeline and move it.
      Removing CTRL modify from scrollwheel support on video widget. Making it very easy to discover the ability to zoom in/out of the video preview widget. Added cursor logic for "resize" button.
      Adding "Clear Recent Projects" to recent project list, and a new "No Recent Projects" menu (and updating translations)
      Adjust position of tutorial message for smaller screens, or when OpenShot is moved past the edge of the screen.
      Removing logic to prevent tutorials from going offscreen (it was too glitchy).
      Apply suggestions from code review
      Forgot current tutorial dialog when hiding (so we don't resurrect the final one accidentally)
      Small refactor to reduce indents
      Updating icon to edit-delete for 'Clear Recent Projects' menu
      Updating all translation files with updated naming/file name (with underscores). This is from our automated LaunchPad process.
      Disabling "No Recent Projects" menu item
      Fix hide tutorial QAction syntax for older Qt versions
      Adding double quotes to some shell script variables, flagged by Codacy
      Fixing additional missing double quotes
      Adding logging for empty exception handlers, such as `Except: pass`
      Replacing JS equality conditions with === / !==, to avoid casting types, and avoid certain types of issues.
      Replacing TABs with spaces, and adding some { } around if conditions
      Apply suggestions from code review
      Apply suggestions from code review
      Improving "rotate" exception handling with more detailed log output
      Move imports back into try/except block
      Updating single quotes in JS to double quotes
      Adding JS declaration for some undefined variables
      Major reformatting of timeline's JS files (removing unused variables, consistent indents, brackets around logic sections, etc...)
      Renaming some methods to use lower-case first letter.  Adding some eslint comments.
      Adding some additional eslint flags
      Adding some additional eslint flags, and adding base 10 to all parseFloat calls
      Fixing some semicolons
      Renaming JS functions with lowercase first letter. A few small syntax tweaks.
      Fixing many == to ===, != to !==
      Adding more eslint comments
      Adding more eslint comments, and fixing duplicate declarations
      Renaming duplicate variable declarations (probably should split this out into functions at some point... too much duplicate code)
      eslint hints
      Trying more eslint variations
      Trying more eslint variations
      Trying more eslint variations
      Trying more eslint variations
      Removing setWindowIcon() from our main window, as it has a crazy side effect on Windows and prevents our QtImageReader from being able to open certain types of files, such as JPEG. Or at least, that is what appears to be happening.
      Updating translations, including a 100% complete Tamil translation!
      Updating translations, including a 100% complete Scottish Gaelic translation!
      Experimental MacOS Catalina app notarization code
      Fix codesign syntax issue
      Integrating notarization bash scripting, to wait until status detected
      Fix notarization regex syntax issue
      Fix notarization status regex
      Refactor notarization to only notarize the DMG (no more zip file or app upload)
      Tweak error detection logic during code signing on Mac
      Fixing symbolic link for emojis, and adding custom entitlements (trying to get past some errors with @rpath and @executablepath caused by the hardened runtime)
      Copying entitlements file to build folder before codesign
      Another entitlements syntax change
      Trying to fix "sh" would like to control your computer message
      Experiment renaming launch-mac.sh to launch-mac, to get rid of an error
      Remove unused bash varible
      Improve bash syntax for waiting for notarization
      Fix bash syntax for mac (a bit tricky)
      Fix bash regex take 3
      Initial support for QtWebEngine and Async callbacks for timeline/Qt integration.
      Updating gitlab tag to linux-bionic, to use out new build server
      Testing new libc dependency
      Testing new libc dependency
      Testing new libc dependency (test 3)
      Removing glib freezing for linux
      Adding idna package to cx_Freeze
      Trying to find work-around for idna error on new cx_Freeze exe
      Fixing LD_LIBRARY_PATH and logic to find QtWebEngineProcess executable
      Fix path for QtWebEngineProcess executable
      Add resource paks for QtWebEngine
      Adding missing QtWebEngine locale and resource files
      Fixed path to webengine resources
      Add xcbglintegrations to freeze
      Tweaking launcher bash file, to correctly add the current folder to LD_LIBRARY_PATH
      Replace AppRun with symlink to openshot-qt-launch
      Updating travis cx_Freeze to 5.1.1, to match build server
      Experimenting with relative AppRun symlinks
      Fixing relative symlink syntax
      Add libxcb-xinerama.so.0 to AppImage
      Apply suggestions from code review
      Apply suggestions from code review
      Adding libpcre.so.3 to freeze.py (for qtwebengine support)
      Updating background color of the QtWebEnginePage, to prevent white flash while loading
      Updating region widget selection, and fixing cancel effect which broke QDragManager
      Updating qt5 rpath script to work with latest Qt version on Mac build server
      Adding new QtWebEngine files to Mac freeze
      Fix path of QtWebEngine process
      More Mac freeze/build fixes for PyQt5.12
      Updating mac builder to qt 5.15
      Fixing paths for Qt 5.15 (mac builder)
      Adding additional notarization logic to protect against failed or slow Apple API
      Fixing issue with QtWebEngineCore file on mac builder
      Fixing bash syntax on mac build script
      Adding custom code signing step for QtWebEngineProcess with custom entitlements for Apple, to stop a memory V8 crash.
      Fixing freeze path for qtwebengine_locale folder, and adding a shared opengl context for QtWebEngine.
      Moving qtWebEngine resources into the application folder (for mac) instead of a 'resources' sub-folder.
      Package all Qt plugins for Mac build, and added some debug/troubleshooting code to find the min sdk version for all packaged files.
      Remove certain qt plugins from mac packaging
      Removing dangerous os.path.split, replacing with os.path.dirname
      Updating some troubleshooting code snippets for Mac builds
      Creating a mixin class to support both WebKit and WebEngine
      Prevent inheritance errors if imports fail
      Adding JS mixin support for QtWebEngine and QtWebKit (so either one will be found and will work)
      Prevent error if webkit not availble
      Fixing some code quality warnings
      Fixing some code quality warnings
      Adding additional logging for Preference hardware decoder testing
      Use fmod for remainders and don't round BAD cases (just truncate string to 2 decimal places)
      Updating output with some more context
      Fixing crash on Windows launch (with no WebEngineView)
      Fixing Mac notarization to wait until --notarization-history contains the record...
      Removing Intel QSV decoding from Preferences for all OSes. This does not work on any OS, and it causes a crash on some Windows machines.
      Always remove existing keyframe points for a colliding X coordinate. For example, if there is already a Point with coordinate X=1, remove that, and then add the new preset Point. Fixes bug where first preset keyframe was uneditable.
      Adapting https://github.com/OpenShot/openshot-qt/pull/3317 PR to enable CTRL to allow for adding to the current selection (for clips and transitions)
      Fixing a few issues with the title editor. 1) font-size was not being initialized on the font dialog, and 2) font-size was not being set (even though it can clobber our template settings 3) Not all text colors were being found when loading an SVG and setting the 'text-color' button.
      No longer trigger an event, but directly delete a clip which is no longer needed during drag/drop. This solves a nasty asny issue where a clip would "stick" on the timeline, due to out of order JS and Python calls
      Updating logo image with simplified color version
      Add stale plugin with custom message to openshot-qt repo
      Revert "Fix loading Unicode paths from 2.4 (#3624)"
      Added a new "font" property editor, and a new "caption" editor, for effects which need them. Caption editor is a dockable widget, which accepts VTT format text and draws captions on a Clip. I've also reworked the "Simple View" and "Advanced View" to contain the caption widget's dock location (when it's needed).
      Updating effect icons, to some experimental ones. I might change these again soon.
      New AppRun test, to use the build in one from the build server
      Change name of desktop file
      Try and use original linux launch script, which calls real AppRun (renamed AppRun.64)
      Testing a new wrapper approach for AppImage
      Enable auto transform for selections.
      Fix string formatting on yml stale message (instead of folded style, use a literal string)
      Fixing import regression after merge... and removing Codacy complaint about unneeded else
      Adding .DirIcon to root of AppImage (a 256x256 PNG icon), used by Chrome OS and some distros
      Another experimental AppImage icon change... for better support of AppImage desktopintegration
      Another experimental AppImage icon change... for better support of AppImage desktopintegration
      Copying all icons into AppImage... into correct XDG Freedesktop icon paths
      Fixed icon path
      Fixed icon path
      Removing unneeded mdir -p
      Renaming the .desktop file == the AppImage app name (which is required for desktopintegration to work)
      Fixing regression causing an *.osp file dropped into the main window to break
      Fixing regression with opencv branch, and commented out lines we need
      Updating icons and cache icons for new opencv effects
      Fixing mac builder CI path to Python3
      Fix mac frozen dependencies (@rpath, /usr/local/) to use @executable_path, and repair the broken cx_Freeze folder and *.app folder. Also fix various dmg building errors due to new file path locations.
      Fix mac frozen dependencies (@rpath, /usr/local/) to use @executable_path, and repair the broken cx_Freeze folder and *.app folder. Also fix various dmg building errors due to new file path locations.
      Fix the Qt gif dependency on the mac build server. The build server has 2 competing libraries with different SO compatibilities. The invalid one needs to be ignored.
      Fix the Qt gif dependency on the mac build server. The build server has 2 competing libraries with different SO compatibilities. The invalid one needs to be ignored.
      Exclude a few more files from the mac build. Trying to avoid a crash related to tesseract and libgif dependencies
      Exclude a few more files from the mac build. Trying to avoid a crash related to tesseract and libgif dependencies
      Add minimum os version to Info.plist, so we don't attempt to install on an older system which will fail.
      Add minimum os version to Info.plist, so we don't attempt to install on an older system which will fail.
      Add improved min Mac OS detection and improved summary.
      Copy *.log files into new lib/settings/ folder (on Mac OS)
      Copy *.log files into new lib/settings/ folder (on Mac OS). Fixing syntax.
      Removing unused signals from a previous merge that left them behind.
      Fixing some codacy issue with unused imports, etc...
      Adding optional version.json to /settings/ folder during build. This is a dump of all 3 repos version info used in this build, including the current date/time. Also, some refactoring of build url naming and version parsing (used by both freeze and build-server.py now.
      Fixing import of parent classes file
      Check for version info on launch and print to stdout/log.
      Fixing resize of video widget to support both height and width resizing, and being always divisible by 2 on both dimensions.
      Fixing some missing imports on video widget
      Adding frozen version to About and launch logs, to make it very clear when and what build version is running on a user's computer (in cases where they are running the frozen version).
      Removing unused files from linux freeze.py script. It includes many hundred MB of unused files or duplicate files.
      Fixing path to build folder
      Fixing path to build folder
      Removing some unused settings
      Updating translation templates
      Updating effect icons and effect cache images
      Fixing initial state of caption dock
      Updating caption effect icon
      removing deployment features from build-server.py, and moving them to deploy.py (coming soon)
      Adding new deployment task to gitlab ci (to prevent rebuilding installers on deploy step)
      Fixing regex for release branch restriction
      Stubbing out publish gitlab job
      Updating git log format to be consistent across all 3 repos (for final release publishing reasons)
      Renaming build_server script, so certain functions can be imported elsewhere (coming soon)
      Fixing args to build_server.py (which have changed a bit)
      Adding new deploy and publish scripts for GitLab CI to manually support deploying files/installers, creating GitHub release objects, creating blog entries, and creating new versions on the website.
      Test bumping the version (for gitlab-ci deployment testing)
      Adding exception to requests to openshot.org
      Adding exception to requests to openshot.org
      Renaming release candidate files before uploading artifacts
      Handling .torrent file differently, since the URL was invalid
      Handling .torrent file differently, since the URL was invalid
      Handling .torrent file differently, since the URL was invalid
      Handling .torrent file differently, since the URL was invalid
      Fixing duplicate upload issue during deploy
      Fixing regex to match file pattern (was excluding the x86 trailing pattern)
      Fixing regex to match file pattern (was excluding the x86 trailing pattern)
      Adding more validations during the publish step, to verify openshot.org/download has correct URLs, which include the new version, and that all URLs are valid (no 404s).
      Fixing URL validation to come after the publish step
      Fixing publish string replace issues
      Fixing exceptions where no JSON is returned.
      Fixing some codacy issues
      Fixing video_widget to allow an override, which ignores the project aspect ratio. When selecting regions from a Clip, the aspact ratio can be different than the project, and thus, we need to only show coordinates that match our clip image data.
      Protecting from missing attributes and checking for Null values
      Initial commit of new Zoom Slider widget, to replace the previous +/- buttons and simple zoom slider. This new widget draws a mini timeline preview, allows the user to select any portion of the timeline, and also pan/scroll around the timeline with great accuracy.
      Removing a few unused variables / imports
      Replacing literal value with a more accurate one (Codacy), and removing unused imports
      Experimental launch.py changes, to remove our main() function and add some additional protection for render_cache_json() timer during shutdown.
      Reverting experimental launch.py changes
      Implementing some code cleanup suggestions
      Enforce min/max values on zoom slider handles, and prevent overlapping handles, or invalid values. Remove some duplicated code.
      Removing horizontal_factor, due to it always being 1.0. Adding selection timer, to prevent mass selections from recalculating zoom slider geometry. Resized scrollbars on timeline, and added more constraints onto zoom slider (min/max zoom).
      Adding parent widgets to all QTimers, for proper cleanup. Fixing a regression where it wasn't possible to unselect a clip, transition, or effect.
      Fixing race condition on double calls to setScale() on project load/launch. This caused the Ruler to be rendered blank.
      Playhead snapping support, when SHIFT is pressed. Improved timeline styling: Removed left+right borders on clips/transitions to fix invalid width and jitter while trimming/moving items. Added brightness to selected clips, and flipped gradient on tracks (to make clips pop more).
      Fixing a regression caused by renaming .env files with version_info.  This caused the version.json file to not be created, and thus, all version info to vanish from all builds.
      Fixing comment english
      Adding snapping logic to ruler dragging (similar to playhead movement). Also fixing a few Codacy issues.
      Initial integration of Sentry tracing, to better track stack-traces and bugs in OpenShot. Removing the old hooks and HTTP posts to openshot.org, since they would be redundant. Sentry is still gated behind our 'send_metrics' setting, just like before.
      Adding sentry_sdk
      Prevent feedback loop when scrolling timeline on web engine backend, triggered by ZoomSlider widget. Also, it appears that we might be invoking run_js too often, and it gets queued up in blocks and processed in chunks. Not very happy with the performance on web engine.
      Experimental freeze changes to include all sentry_sdk modules (they seem to be missing on Windows builds)
      Experimental freeze changes to exclude django
      Experimental freeze changes to exclude django
      Fixing a few sentry.io related issues:
      Updating protection of timeline_sync.timeline
      Downgrading map for angular-animate
      Adding effect UI filtering, for audio and video effects, and a show all button.
      Removing dockAudioEffects which is unused
      Removing some previous optimizations that are no longer needed, refactoring the zoom slider handle logic a bit. Removing a processEvents() call that was experimental.
      Fixing thumbnail image size which can be larger than the grid size. Noticable on audio thumbnails.
      Adding snapping support for Playhead dragging + SHIFT, Clip/Transitions trimming, and refactoring some snapping related code. Also adjusting CSS styles for Clips and Transitions, to provide no left/right borders.
      Fixing some Codacy issues
      Fixing more Codacy issues
      Updating all translations and supporters
      Updating effect icons
      Updating effect icons (also including @2x versions for high DPI screens)
      Fixing race condition on Export dialog, which would invoke timeline.ApplyMapperToClips() after the export had begun... usually introducing a glitch into the 1st 10 frames written to the video file (when exporting to a different framerate)
      Updating expander icon, and adding new cache images
      Generating new translations (for new audio effects, and any other recent translatable)
      Fixing High DPI widget mode (which is not ready yet), and replacing a few effect icons.
      Add a new link widget to our preprocessing effect dialog, so we can give further instructions/link to users who want to download the object detector dependencies.
      Fixing a regression on Export dialog, where we were not correctly applying FrameMapper's to all the clips.. causing audio desync, timing issues with Clips, audio pitch issues
      Updating object detection effect icons to include "BETA". I also updated the wiki instructions for this effect.
      Fixing missing translations on new effect init dialogs (effect preprocessing data), and error on translator credits (which contain some unexpected text)
      Updated POT translation templates with missing strings
      Updated POT translation templates with missing strings
      Updated contributors json with some new ones
      Adding translations to context menus on about / credits dialogs. Added context menu to contributors dialog, for copying email and viewing websites.
      Adding more context around effect parameters, and updating the POT template (a few new strings)
      Updating supporters json
      Adding sentry error rates on our openshot.org version request... so we can adjust them dynamically (stable vs unstable versions).
      Fixing tutorial positioning (which sometimes doesn't work correctly, leaving the tutorial window in the upper right corner)
      Optimising the opt-in / opt-out process, so we can capture the initial launch anonymously, and then opt-out the user and prompt them to opt back in. Essentially this is the same as before, except we get the initial launch analytic (to help us better report on our usage and market share). All subsequent tracking is disabled until the user opts in.
      Setting a new default simple layout
      Making the ZMQ logger better protected, and more able to shut down itself... so we don't get stuck on program exit waiting forever for a ZMQ polling event.
      Adding a few more updated translations
      Fixing a bug when detecting libopenshot version mismatch. We can't access app.show_errors in the exception handler, since app fails to initialize.
      Adding some protection around certain timeline JS bounding box operations (Sentry.io errors)
      Adding a "Select a Color" context menu for color keyframes, so it's still possible to change animation interpolations, remove keyframes, etc... on a color keyframe. Double clicking the color still works the same though.
      Trying to prevent the accessing of 2 occasionally uninitialized vars (sentry issue)
      Fixing invalid default step value for QSpinBox widgets (sentry)
      Fixing spelling error and changing Blender log to warning instead of error, since this is a perfectly valid outcome (with the wrong version of blender)
      Fix a regression from https://github.com/OpenShot/openshot-qt/pull/4230, which broke multi-select drag and drop for clips and transitions.
      Removing unneeded digest (i think), to prevent an Angular error when we have subsequent applyJsonDiff calls very close together (i.e. slice a clip)
      Adding check for empty $REQUEST_UUID on Mac builds
      Fixing a max length error on deploy/publish script with GitHub API, and adding better errors for GitHub specific issues.
      Fix translation testing scripts to actually work! This caused our 2.6.0 branch to use invalid translations, oops.
      Updating broken translation placeholders and updating translations since release of 2.6.0
      Adding translation testing to our GitHub actions CI... to make language translation failures more visible.
      Updating translation resource file, to actually fix the 4 broken languages
      Protect against invalid items passed into setBoundingBox
      Protect recovery process from missing project file (i.e. a user deletes the current project file in the file system... while the auto-save system is still running). Also reduce some logging in the asset folder detection.
      Also silencing the thumbnail 404 error logging (which currently is sent to Sentry for no real reason)
      Fixing an uninitialized variable on export screen (caught using Sentry)
      Creating a backup of possible 2.6.0 windows drive letter corruption, compiling regex, and updating original file during the project open.
      Avoid dividing by zero when resizing app/video widget
      Fixing unused calculation
      Updating translations
      Auto migrate crop_x, crop_y, crop_width, and crop_height properties from OpenShot 2.5.1 projects into the new 2.6.x crop effect. This should restore cropping to 100% compatibility to OpenShot 2.5.1 projects.
      Updating all language translations
      Updating contributors and supporters
      Bumping version to 2.6.1, min libopenshot version to 0.2.7 (SO 21)

Kilian (2):
      Solved bug: Credits window (Help > About OpenShot > Credits) was not popping out
      Resolve Credits not popping up bug: minor changes

Lorenzo Spinelli (1):
      keyboard shortcut "R" to toogle the razor tool (#4007)

Marcel Waldvogel (1):
      Fix loading Unicode paths from 2.4 (#3624)

Martin Thoma (7):
      Adjust log levels (#3724)
      STY: Simplify the code
      Apply suggestions from code review
      Early return
      Simplify code by combining 'or' statements
      STY: Use enumerate, avoid Yoda conditions
      Streamline dict access patterns (#4017)

MatthieuMeert (5):
      horizontal scrolling with SHIFT+scroll functional
      added comments
      Revert "added comments"
      Revert "horizontal scrolling with SHIFT+scroll functional"
      horizontal scroll using shift+scroll works with webkit backend

Rabit (1):
      Ability to not store the history in the project

Sebastian Spaeth (1):
      Improve Documentation

SuslikV (6):
      Unify the getDocks searching algorithm
      Use unified function for Docks searching
      Secure the NoDockWidgetArea docks from changes
      Fix Qt warning message, code cleanup
      Add support for cqp setting in Export dialog
      Update emojis model first

Vincent Davoust (8):
      [#1363] Added keyframes of currently selected clips as markers for easy navigation
      [#1363] (Fix) Added keyframes of currently selected clips as markers for easy navigation
      [#1363] (Code style) Added keyframes of currently selected clips as markers for easy navigation
      [#1363] (Corrections) IMplementing fixes & style improvements recommended by @ferdnyc
      [#1363] Code style & transitions keyframes
      [#1363] Navigating effect keyframes & copy/paste mistake fix
      [#1363] Updated ui tooltip name (suggested by @SuslikV)
      Replacing tooltip labels to Next|Previous Key Point

cboling2 (2):
      clip.rst: "it's" --> "its" (#3930)
      developers.rst: fixed "many bugs...can be added" (#3931)

dependabot[bot] (4):
      Bump actions/upload-artifact from v1 to v2.2.1 (#3936)
      Bump actions/upload-artifact from v2.2.1 to v2.2.2 (#3959)
      Bump actions/upload-artifact from v2.2.2 to v2.2.3 (#4089)
      Bump actions/upload-artifact from 2.2.3 to 2.2.4 (#4201)

eisneinechse (20):
      Include new codecs
      Minor improvements
      Improved presets for libaom-av1
      Change export windows title at the end of the export
      Update src/windows/export.py
      Honour the interlace setting
      This is so far the only preset that exports interlace.
      Include an option to chose between top field first and
      New preset file for h265 codec in an mkv container.
      Make the interface for interlace more consistent
      Change the display (precision) of the progress bar during export
      The precision (digits after decimal point) is now adjusted automatically
      To handle the unlikely situation that the program jumps to
      Compose the export windows title with a local function to make
      Use the right variable to show the elaped time
      Added some comments
      Removed trailing spaces
      Change of name of library
      Variables have now more readable names
      Add missing QUrl, so import file works

eszlari (2):
      Linux/setup.py: install 128x128 icon (#3374)
      appdata: add <provides> (#3398)

spt3m4 (1):
      "Copy Keyframes > All" includes "Crop *" settings

unknown (1):
      Update models only once on init

vincentdavoust (1):
      Removed unecessary logging in keyframe navigation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
interface GUI / user interface issues (i.e. windows, buttons, scrolling, pop-ups, etc...)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Weird behavior with Ctrl + Right Click after selecting multiple items on timeline
3 participants