Skip to content

Add Middle Click (Hold) mode and UI enhancements#10

Open
hadarshamir wants to merge 2 commits intofromis-9:mainfrom
hadarshamir:feature/enhancements-proper
Open

Add Middle Click (Hold) mode and UI enhancements#10
hadarshamir wants to merge 2 commits intofromis-9:mainfrom
hadarshamir:feature/enhancements-proper

Conversation

@hadarshamir
Copy link

@hadarshamir hadarshamir commented Nov 19, 2025

This PR adds several enhancements to Scrollapp:

New Features

  • Middle Click (Hold): New activation method that stops scrolling when you release the middle mouse button, instead of on any click. This provides an alternative workflow for users who prefer to hold the button while scrolling.
  • Scroll Speed Menu: Replaced the slider with a cleaner dropdown menu offering 6 preset speeds (0.5x to 3.0x)
  • Faster Scrolling: Increased maximum scroll speed from 30px to 60px and acceleration from 2.5x to 4.0x
  • Hide from Dock: App now only appears in the menu bar, not in the Dock
  • Trackpad Activation Toggle: Added menu option to enable/disable Option+Scroll trackpad activation (enabled by default)

Improvements

  • Removed unused 'Activation Methods' info menu
  • Both 'Middle Click' (original) and 'Middle Click (Hold)' behaviors are fully separated and independent
  • Updated About dialog with clearer activation method descriptions

Bug Fixes

  • Fixed missing project.pbxproj file (closes Scrollapp.xcodeproj file's missing #8) - Added the file to git so the project can be built from source
  • Fixed trackpad mode to stop on any mouse click (not just middle click)
  • Ensured click monitor is active for trackpad/manual activation modes

Technical Details

  • Added middleClickHold enum case with usesHoldBehavior property
  • Split click monitor setup into separate function for dynamic behavior switching
  • Monitor is now properly recreated when changing activation methods
  • Uses NSApp.setActivationPolicy(.accessory) and LSUIElement in Info.plist to hide from Dock
  • Trackpad toggle persists via UserDefaults (defaults to enabled for backward compatibility)

All changes maintain backward compatibility with existing functionality.

@hadarshamir hadarshamir force-pushed the feature/enhancements-proper branch 4 times, most recently from afaa420 to 0737f75 Compare November 19, 2025 06:01
## New Features
- **Middle Click (Hold)**: New activation method that stops scrolling when you release the middle mouse button
- **Scroll Speed Menu**: Replaced slider with dropdown menu offering 6 preset speeds (0.5x to 3.0x)
- **Faster Scrolling**: Increased maximum scroll speed from 30px to 60px and acceleration from 2.5x to 4.0x
- **Hide from Dock**: App now only appears in menu bar (using NSApp.setActivationPolicy(.accessory) and LSUIElement)
- **Trackpad Activation Toggle**: Added menu option to enable/disable Option+Scroll trackpad activation

## Improvements
- Removed unused 'Activation Methods' info menu
- Fixed trackpad mode to stop on any mouse click (not just middle click)
- Ensured click monitor is active for trackpad/manual activation modes
- Updated About dialog with clearer activation method descriptions

## Bug Fixes
- **Added missing project.pbxproj file** (closes fromis-9#8) - Project can now be built from source

## Technical Details
- Added middleClickHold enum case with usesHoldBehavior property
- Split click monitor setup into separate function for dynamic behavior switching
- Monitor is properly recreated when changing activation methods
- Trackpad toggle persists via UserDefaults (defaults to enabled)

All changes maintain backward compatibility with existing functionality.
@hadarshamir hadarshamir force-pushed the feature/enhancements-proper branch from 0737f75 to 0dd143e Compare November 19, 2025 06:03
setupClickMonitor() was only called when manually selecting an activation
method, causing hold-behavior modes like "Middle Click (Hold)" to not work
after app restart.
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.

Scrollapp.xcodeproj file's missing

1 participant