Commit 7d5c3cfd authored by Stéphane Borel's avatar Stéphane Borel

Fixed a bug in the computation of the mouse coordinates sent to interface.

parent a2447211
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* xcommon.c: Functions common to the X11 and XVideo plugins * xcommon.c: Functions common to the X11 and XVideo plugins
***************************************************************************** *****************************************************************************
* Copyright (C) 1998-2001 VideoLAN * Copyright (C) 1998-2001 VideoLAN
* $Id: xcommon.c,v 1.42 2002/07/02 19:14:59 sam Exp $ * $Id: xcommon.c,v 1.43 2002/07/17 21:34:57 stef Exp $
* *
* Authors: Vincent Seguin <seguin@via.ecp.fr> * Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org> * Samuel Hocevar <sam@zoy.org>
...@@ -749,10 +749,16 @@ static int vout_Manage( vout_thread_t *p_vout ) ...@@ -749,10 +749,16 @@ static int vout_Manage( vout_thread_t *p_vout )
/* Mouse click */ /* Mouse click */
else if( xevent.type == ButtonPress ) else if( xevent.type == ButtonPress )
{ {
p_vout->i_mouse_x = (int)( (float)xevent.xmotion.x int i_width, i_height, i_x, i_y;
/ p_vout->p_sys->p_win->i_width * p_vout->render.i_width );
p_vout->i_mouse_y = (int)( (float)xevent.xmotion.y vout_PlacePicture( p_vout, p_vout->p_sys->p_win->i_width,
/ p_vout->p_sys->p_win->i_height * p_vout->render.i_height ); p_vout->p_sys->p_win->i_height,
&i_x, &i_y, &i_width, &i_height );
p_vout->i_mouse_x = ( xevent.xmotion.x - i_x )
* p_vout->render.i_width / i_width;
p_vout->i_mouse_y = ( xevent.xmotion.y - i_y )
* p_vout->render.i_height / i_height;
p_vout->i_mouse_button = 1; p_vout->i_mouse_button = 1;
switch( ((XButtonEvent *)&xevent)->button ) switch( ((XButtonEvent *)&xevent)->button )
...@@ -803,16 +809,25 @@ static int vout_Manage( vout_thread_t *p_vout ) ...@@ -803,16 +809,25 @@ static int vout_Manage( vout_thread_t *p_vout )
/* Mouse move */ /* Mouse move */
else if( xevent.type == MotionNotify ) else if( xevent.type == MotionNotify )
{ {
int i_width, i_height, i_x, i_y;
/* somewhat different use for vout_PlacePicture:
* here the values are needed to give to mouse coordinates
* in the original picture space */
vout_PlacePicture( p_vout, p_vout->p_sys->p_win->i_width,
p_vout->p_sys->p_win->i_height,
&i_x, &i_y, &i_width, &i_height );
p_vout->i_mouse_x = ( xevent.xmotion.x - i_x )
* p_vout->render.i_width / i_width;
p_vout->i_mouse_y = ( xevent.xmotion.y - i_y )
* p_vout->render.i_height / i_height;
p_vout->p_sys->i_time_mouse_last_moved = mdate(); p_vout->p_sys->i_time_mouse_last_moved = mdate();
if( ! p_vout->p_sys->b_mouse_pointer_visible ) if( ! p_vout->p_sys->b_mouse_pointer_visible )
{ {
ToggleCursor( p_vout ); ToggleCursor( p_vout );
} }
p_vout->i_mouse_x = (int)( (float)xevent.xmotion.x
/ p_vout->p_sys->p_win->i_width * p_vout->render.i_width );
p_vout->i_mouse_y = (int)( (float)xevent.xmotion.y
/ p_vout->p_sys->p_win->i_height * p_vout->render.i_height );
} }
/* Reparent move -- XXX: why are we getting this ? */ /* Reparent move -- XXX: why are we getting this ? */
else if( xevent.type == ReparentNotify ) else if( xevent.type == ReparentNotify )
......
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