Pixelorama icon indicating copy to clipboard operation
Pixelorama copied to clipboard

Very slow scroll frame bar

Open Rasterisko opened this issue 3 weeks ago β€’ 6 comments

Pixelorama version: 1.1.7-stable

Where did you download Pixelorama from? GitHub Releases

OS/device including version: Linux Mint LMDE, Ryzen 7 5700G

Issue description: In version 1.1.6 using the mouse scroll to pass the frames had the ideal speed: it was not extremely fast and it was not slow. With version 1.1.7 it's absurdly slow! I can't tell if this was a bug or if it was a deliberate change, but it is terrible for files with a lot of frame.

Steps to reproduce:

  1. Create many frames
  2. Use mouse scroll to move the frame bar

VΓ­deo Comparing the previous version 1.1.6 with the new version 1.1.7

https://github.com/user-attachments/assets/48c510b8-453b-4b8c-860b-d6200952adb7

Rasterisko avatar Dec 03 '25 13:12 Rasterisko

Hy, i've narrowed it down to this commit: https://github.com/Orama-Interactive/Pixelorama/commit/ad7780bed55ad30dab9468a432f7909aa911c823

It seems to be deliberate

Variable-ind avatar Dec 03 '25 15:12 Variable-ind

I really didn't like the change, but if it was on purpose there must probably be people asking for it. I'll stick with the previous version, 1.1.6 and maybe don't update anymore. For me it's very bad to have to scroll many times just to be able to navigate through the frames or click and move the bar.

Thanks for the info!

Rasterisko avatar Dec 03 '25 16:12 Rasterisko

I really didn't like the change, but if it was on purpose there must probably be people asking for it. I'll stick with the previous version, 1.1.6 and maybe don't update anymore. For me it's very bad to have to scroll many times just to be able to navigate through the frames or click and move the bar.

Thanks for the info!

No problem, Btw, you CAN change speed to how it was before through extensions (i already did this below so you don't have to 😁)

Extension (Extract first, then drag and drop inside pixelorama)

Link πŸ‘‰ : ExtractMe.zip

https://github.com/user-attachments/assets/7f6c8835-4a9c-4572-9c39-63b8207e0a44

Code (Main.gd of the extension)

extends Node

@onready var extension_api: Node  ## A variable for easy reference to the Api
var frame_scroller: Control

## This script acts as a setup for the extension
func _enter_tree() -> void:
	# NOTE: Use get_node_or_null("/root/ExtensionsApi") to access api.
	# NOTE: See https://www.oramainteractive.com/Pixelorama-Docs/extension_system/extension_api for
	# detailed documentation.
	extension_api = get_node_or_null("/root/ExtensionsApi")
	# |==== Your code goes here ====|
	frame_scroller = extension_api.general.get_global().animation_timeline.frame_scroll_container
	if frame_scroller:
		frame_scroller.gui_input.connect(override_scroll_speed)
	# |=============================|


func override_scroll_speed(event: InputEvent):
	if frame_scroller.get_child_count() == 0:
		return
	var vertical_scroll: bool = frame_scroller.get_child(0).size.y >= frame_scroller.size.y
	var should_h_scroll := not vertical_scroll
	var cel_size: int = extension_api.general.get_global().animation_timeline.cel_size / 2 + 2
	if event is InputEventWithModifiers and not should_h_scroll:
		should_h_scroll = event.shift_pressed
	if event is InputEventMouseButton:
		if event.button_index in [MOUSE_BUTTON_WHEEL_RIGHT, MOUSE_BUTTON_WHEEL_LEFT]:
			# This helps/allows two finger scrolling (on Laptops)
			should_h_scroll = true
		if should_h_scroll:
			if is_instance_valid(frame_scroller.h_scroll_bar):
				if (
					event.button_index == MOUSE_BUTTON_WHEEL_UP
					or event.button_index == MOUSE_BUTTON_WHEEL_LEFT
				):
					frame_scroller.h_scroll_bar.value -= cel_size
					frame_scroller.accept_event()
					return
				if (
					event.button_index == MOUSE_BUTTON_WHEEL_DOWN
					or event.button_index == MOUSE_BUTTON_WHEEL_RIGHT
				):
					frame_scroller.h_scroll_bar.value += cel_size
					frame_scroller.accept_event()
					return


## Gets called when the extension is being disabled or uninstalled (while enabled).
func _exit_tree() -> void:
	# Remember to remove things that you added using this extension
	# Disconnect any signals and queue_free() any nodes that got added.
	if frame_scroller:
		frame_scroller.gui_input.disconnect(override_scroll_speed)

Variable-ind avatar Dec 03 '25 16:12 Variable-ind

Thaaaaaaaaaaaaaaanks! Good that now I will be able to enjoy the updates!

Rasterisko avatar Dec 03 '25 17:12 Rasterisko

@Variable-ind , I found a limitation in your extension. The extension does make it faster to pass the frames horizontally, but I can't scroll vertically anymore. πŸ‘€

Rasterisko avatar Dec 05 '25 00:12 Rasterisko

@Rasterisko Thanks for reporting, i have fixed it πŸ‘, please re-download the extension 😁, And restart pixelorama after adding the extension

Variable-ind avatar Dec 05 '25 04:12 Variable-ind

YEEEEEEEEEEEES!

THANKS AGAIN, VARIABLE-IND!!! 🩢

Rasterisko avatar Dec 11 '25 14:12 Rasterisko