Skip to content

Fix mouse wheel zoom with high DPI#223

Open
kenmcgaugh wants to merge 63 commits intoAcademySoftwareFoundation:developfrom
kenmcgaugh:mouse_wheel_zoom
Open

Fix mouse wheel zoom with high DPI#223
kenmcgaugh wants to merge 63 commits intoAcademySoftwareFoundation:developfrom
kenmcgaugh:mouse_wheel_zoom

Conversation

@kenmcgaugh
Copy link
Copy Markdown
Contributor

Using the mouse wheel to zoom in the viewport while on a high DPI device was zooming around the wrong anchor position. Other mouse events were using different logic to for the mouse position so I updated the wheel event processing to do the same.

Linked issues

Summarize your change.

Describe the reason for the change.

Describe what you have tested and on which operating system.

Add a list of changes, and note any that might need special attention during the review.

If possible, provide screenshots.

kenmcgaugh and others added 30 commits November 26, 2025 06:40
Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
…annotation_serialiser.cpp.

Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
…List, and Timecode.

Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
…ed as MS_MISSING. This allows for media_sources to be provided by http(s).

Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
…ore file exists in a thumbnail cache directory.

Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
…sage.

Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
…data value through xstudio's file-path remapping mechanism. Likewise, all the search paths within the config are also passed through file path remapping.

Note that any path set via the OCIO environment variable is left as-is.

Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
…ur management metadata. We use this to set the working_space to "raw" for media we want to remain unmanaged but still allow for the global view to be set without causing error messages.

Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
… Ctrl+1 through Ctrl+9 (linux) and each select the the corresponding view for the current display. Under MacOS these are Cmd+1 through Cmd+9.

Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Updated version of openimageio from 2.5.19.1 to 2.5.16.0#1.

Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
…ure_remove_media_sources

Add ability to programatically remove media_source's from media items.
…_fixes_additions

Miscellaneous fixes and additions
…_additions

OCIO view hotkeys, working_space, and file-path remapping
…ure_disable_http_ssl_verify

Allow for optionally disabling SSL verification.
tedwaine and others added 25 commits February 2, 2026 11:28
Signed-off-by: Ted Waine <ted.waine@gmail.com>
…rt_timeline_uri

Added support for specifying timelines to import via custom URI
… changing the cursor to be a grab of the item being dragged along with a badge showing the number of items being dragged. It also fixes some issues causing instabilities or awkwardness in the UI relating to drag-n-drop.

Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
…ustom mime-data.

Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
…nging the URI of the currently viewed media_source. This seemed the safest fix although there are others I tried but I was worried about the potential impact on performance.

Signed-off-by: Ken McGaugh <ken@mcgaugh.co.uk>
On Windows, extensionless shell scripts aren't executable. Add .cmd
batch wrappers for xstudio-control, xstudio-inject, and xstudiopy
that set PYTHONPATH and invoke the bundled Python interpreter. The
existing Linux/macOS scripts are unchanged — CMake selects the right
variant per platform.

Remove the non-functional xstudio.bat.in template, which was a
copy of the Linux shell launcher containing Linux-only constructs
(LD_LIBRARY_PATH, xstudio_desktop_integration). On Windows,
xstudio.exe is invoked directly and needs no wrapper.

Signed-off-by: Ben De Luca <bdeluca@gmail.com>
Use os.pathsep instead of hardcoded ":" to split
XSTUDIO_PYTHON_PLUGIN_PATH, since Windows uses ";" as
the path separator and ":" would break drive letters.

Signed-off-by: Ben De Luca <bdeluca@gmail.com>
Env var values can contain trailing whitespace depending on
how they are set (e.g. cmd.exe "set VAR=value && cmd"),
causing path lookups to fail.

Signed-off-by: Ben De Luca <bdeluca@gmail.com>
Use generic_string() instead of string() for directory entries.
path::string() returns OS-native separators (backslashes on Windows),
while the regex is built from URI-decoded paths that use forward
slashes. generic_string() always returns forward slashes, so the
regex matches correctly.

Signed-off-by: Ben De Luca <bdeluca@gmail.com>
Add proper UNC path support for Windows:
- posix_path_to_uri: Convert \\server\share\path to file://server/share/path
- uri_to_posix_path: Reconstruct \\server\share\path from file://server/share/path

This fixes drag-and-drop of image sequences from network shares on Windows.

Also fix a pre-existing bug where reverse_remap_file_path was called
on the original input parameter instead of the working copy, discarding
any transformations applied earlier in the function.

Signed-off-by: Ben De Luca <bdeluca@gmail.com>
On Windows, paths like R:\foo were passed directly to the URI builder
without normalising backslashes or prepending a leading slash, producing
invalid file URIs. Normalise to forward slashes and prepend / for
drive-letter paths so they produce correct file:///R:/foo URIs.

Signed-off-by: Ben De Luca <bdeluca@gmail.com>
…a_source_crash

Fix for an occaisional crash when swapping a media_source's URI
…vent-subscription-group

Fix event subscription to use event_group instead of event_source.remote
…e_data

Allow for custom mime-data when pasteing from the clipboard
…ows-cmd-wrappers

Windows command wrappers
…AcademySoftwareFoundation#216)

* Request desktop OpenGL explicitly for Wayland/EGL compatibility

On Wayland, Qt uses EGL for OpenGL context creation. Without
explicit request, EGL may default to OpenGL ES, but xstudio
shaders require GLSL 410+ (desktop OpenGL 4.1+). Add
setRenderableType(QSurfaceFormat::OpenGL) to explicitly request
desktop OpenGL while maintaining native Wayland performance.

Signed-off-by: Ben De Luca <bdeluca@gmail.com>

* Add OpenGL version check at startup

Check GPU capabilities before loading the QML engine. Logs the
GL vendor, renderer and version string, and exits cleanly if the
context version is below the minimum required (4.3, or 4.1 on
macOS). Replaces the previous hard-coded setVersion call with
shared required_gl_major/required_gl_minor constants.

Signed-off-by: Ben De Luca <bdeluca@gmail.com>

---------

Signed-off-by: Ben De Luca <bdeluca@gmail.com>
Signed-off-by: Ted Waine <ted.waine@gmail.com>
* Add Ninja build presets and /MP guard for Windows

Add windows-ninja-base preset and three derived presets (Debug,
Release, RelWithDebInfo) that use the Ninja generator. Guard the
MSVC /MP compile option so it is only added for MSBuild generators —
Ninja already parallelizes at the file level, so /MP would
over-subscribe CPUs.

Add CMakeUserPresets.json to .gitignore so developers can create
local preset overrides (e.g. custom Qt paths) without dirtying the
working tree. CMake reads CMakeUserPresets.json automatically
alongside CMakePresets.json.

Signed-off-by: Ben De Luca <bdeluca@gmail.com>

* Add Ninja build instructions to Windows build guide

Document how to use the Ninja presets as an alternative to MSBuild.
Uses Enter-VsDevShell to set up the MSVC compiler, cmake and ninja
on PATH from a standard Powershell session.

Signed-off-by: Ben De Luca <bdeluca@gmail.com>

---------

Signed-off-by: Ben De Luca <bdeluca@gmail.com>
The build guides were moved to docs/reference/build_guides/ but the
README still referenced the old docs/build_guides/ path, resulting
in 404 errors when users clicked the links.

Signed-off-by: pmady <pavan4devops@gmail.com>
Signed-off-by: Sam.Richards@taurich.org <Sam.Richards@taurich.org>
Using the mouse wheel to zoom in the viewport while on a high DPI device was zooming around the wrong anchor position. Other mouse events were using different logic to for the mouse position so I updated the wheel event processing to do the same.

Signed-off-by: kenmcgaugh <ken@mcgaugh.co.uk>
@tedwaine tedwaine force-pushed the develop branch 5 times, most recently from fdad865 to 0a90eea Compare March 30, 2026 21:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants