qs: fix workspaces scroll with trackpad
This commit is contained in:
		
							parent
							
								
									406ffd6c15
								
							
						
					
					
						commit
						26b35a8e50
					
				
					 1 changed files with 16 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -18,15 +18,23 @@ FullwidthMouseArea {
 | 
			
		|||
	fillWindowWidth: true
 | 
			
		||||
	acceptedButtons: Qt.NoButton
 | 
			
		||||
 | 
			
		||||
	onWheel: event => {
 | 
			
		||||
		event.accepted = true;
 | 
			
		||||
		const step = -Math.sign(event.angleDelta.y);
 | 
			
		||||
		const targetWs = currentIndex + step;
 | 
			
		||||
  property int scrollAccumulator: 0
 | 
			
		||||
 | 
			
		||||
		if (targetWs >= wsBaseIndex && targetWs < wsBaseIndex + wsCount) {
 | 
			
		||||
			Hyprland.dispatch(`workspace ${targetWs}`)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
  onWheel: event => {
 | 
			
		||||
    event.accepted = true;
 | 
			
		||||
    let acc = scrollAccumulator - event.angleDelta.y;
 | 
			
		||||
    const sign = Math.sign(acc);
 | 
			
		||||
    acc = Math.abs(acc);
 | 
			
		||||
 | 
			
		||||
    const offset = sign * Math.floor(acc / 120);
 | 
			
		||||
    scrollAccumulator = sign * (acc % 120);
 | 
			
		||||
 | 
			
		||||
    if (offset != 0) {
 | 
			
		||||
      const targetWorkspace = currentIndex + offset;
 | 
			
		||||
      const id = Math.max(1, Math.min(10, targetWorkspace));
 | 
			
		||||
      if (id != currentIndex) Hyprland.dispatch(`workspace ${id}`);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	readonly property HyprlandMonitor monitor: Hyprland.monitorFor(bar.screen);
 | 
			
		||||
	property int currentIndex: 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue