Commit 2a2b4783 authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

Mac OS X gui: Use the proper vlc infrastructure to send mouse wheel event.

parent 3af039a0
...@@ -83,6 +83,7 @@ ...@@ -83,6 +83,7 @@
- (BOOL) isFullscreen; - (BOOL) isFullscreen;
- (IBAction)windowAction:(id)sender; - (IBAction)windowAction:(id)sender;
- (BOOL)keyEvent:(NSEvent *)o_event; - (BOOL)keyEvent:(NSEvent *)o_event;
- (void)scrollWheel:(NSEvent *)theEvent;
- (void)setupVarMenuItem:(NSMenuItem *)o_mi - (void)setupVarMenuItem:(NSMenuItem *)o_mi
target:(vlc_object_t *)p_object target:(vlc_object_t *)p_object
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#import "controls.h" #import "controls.h"
#import "playlist.h" #import "playlist.h"
#include <vlc_osd.h> #include <vlc_osd.h>
#include <vlc_keys.h>
/***************************************************************************** /*****************************************************************************
* VLCControls implementation * VLCControls implementation
...@@ -464,6 +465,24 @@ ...@@ -464,6 +465,24 @@
} }
- (void)scrollWheel:(NSEvent *)theEvent
{
intf_thread_t * p_intf = VLCIntf;
float f_absvalue = [theEvent deltaY] > 0.0f ? [theEvent deltaY] : -[theEvent deltaY];
int i, i_vlckey;
f_absvalue = f_absvalue/2.0f + 1.0f;
if ([theEvent deltaY] < 0.0f)
i_vlckey = KEY_MOUSEWHEELDOWN;
else
i_vlckey = KEY_MOUSEWHEELUP;
/* Send multiple key event, depending on the intensity of the event */
for (i = 0; i < (int)f_absvalue; i++)
var_SetInteger( p_intf->p_libvlc, "key-pressed", i_vlckey );
}
- (BOOL)keyEvent:(NSEvent *)o_event - (BOOL)keyEvent:(NSEvent *)o_event
{ {
BOOL eventHandled = NO; BOOL eventHandled = NO;
......
...@@ -442,22 +442,7 @@ int DeviceCallback( vlc_object_t *p_this, const char *psz_variable, ...@@ -442,22 +442,7 @@ int DeviceCallback( vlc_object_t *p_this, const char *psz_variable,
- (void)scrollWheel:(NSEvent *)theEvent - (void)scrollWheel:(NSEvent *)theEvent
{ {
VLCControls * o_controls = (VLCControls *)[[NSApp delegate] getControls]; VLCControls * o_controls = (VLCControls *)[[NSApp delegate] getControls];
float f_absvalue = [theEvent deltaY] > 0.0f ? [theEvent deltaY] : -[theEvent deltaY]; [o_controls scrollWheel: theEvent];
int i;
f_absvalue /= 2.0f;
f_absvalue += 1.0f;
/* Set the volume */
if (f_absvalue > 1.1f)
{
for (i = 0; i < (int)f_absvalue; i++)
{
if ([theEvent deltaY] < 0.0f)
[o_controls volumeDown: self];
else
[o_controls volumeUp: self];
}
}
} }
- (void)keyDown:(NSEvent *)o_event - (void)keyDown:(NSEvent *)o_event
...@@ -960,6 +945,8 @@ int DeviceCallback( vlc_object_t *p_this, const char *psz_variable, ...@@ -960,6 +945,8 @@ int DeviceCallback( vlc_object_t *p_this, const char *psz_variable,
[self scaleWindowWithFactor: 1.0 animate: [o_window isVisible] && (![o_window isFullscreen])]; [self scaleWindowWithFactor: 1.0 animate: [o_window isVisible] && (![o_window isFullscreen])];
[o_window setAspectRatio:NSMakeSize([o_window frame].size.width, [o_window frame].size.height)];
/* Make sure our window is visible, if we are not in fullscreen */ /* Make sure our window is visible, if we are not in fullscreen */
if (![o_window isFullscreen]) if (![o_window isFullscreen])
[o_window makeKeyAndOrderFront: self]; [o_window makeKeyAndOrderFront: self];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment