mirror of
https://github.com/TTimo/GtkRadiant.git
synced 2025-01-10 03:51:18 +00:00
issue #380 and friends. the windows path was reading cursor pos via gdk_window_get_pointer and setting via SetCursorPos, doing some bs coord adjustment based on information read from SPI_GETWORKAREA.
This commit is contained in:
parent
ed15d78e2b
commit
03f5911b57
2 changed files with 15 additions and 9 deletions
|
@ -2466,6 +2466,7 @@ void MainFrame::Create(){
|
||||||
gdk_offset_y = MAX( gdk_offset_y, -monitorInfo.win_monitors[monitorInfo.i_win_mon].y );
|
gdk_offset_y = MAX( gdk_offset_y, -monitorInfo.win_monitors[monitorInfo.i_win_mon].y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We do not use these offsets anymore. This could all probably be trashed. I doubt the multi monitor does anything useful/works either.
|
||||||
Sys_Printf( "GDK's coordinate system is offset by %d over the x-axis and %d over the y-axis from Windows' coordinate system.\n", gdk_offset_x, gdk_offset_y );
|
Sys_Printf( "GDK's coordinate system is offset by %d over the x-axis and %d over the y-axis from Windows' coordinate system.\n", gdk_offset_x, gdk_offset_y );
|
||||||
|
|
||||||
if ( g_PrefsDlg.m_bStartOnPrimMon ) {
|
if ( g_PrefsDlg.m_bStartOnPrimMon ) {
|
||||||
|
|
|
@ -1294,20 +1294,25 @@ void WINAPI Sys_EndWait( void ){
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sys_GetCursorPos( int *x, int *y ){
|
void Sys_GetCursorPos( int *x, int *y ){
|
||||||
// FIXME: not multihead safe
|
#ifdef _WIN32
|
||||||
|
POINT p;
|
||||||
|
if ( !GetCursorPos( &p ) ) {
|
||||||
|
Sys_Printf( "GetCursorPos failed: GetLastError()=0x%08x", GetLastError() );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*x = p.x;
|
||||||
|
*y = p.y;
|
||||||
|
#else
|
||||||
gdk_window_get_pointer( NULL, x, y, NULL );
|
gdk_window_get_pointer( NULL, x, y, NULL );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sys_SetCursorPos( int x, int y ){
|
void Sys_SetCursorPos( int x, int y ){
|
||||||
// NOTE: coordinates are in GDK space, not OS space
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
int sys_x = x - g_pParentWnd->GetGDKOffsetX();
|
if ( !SetCursorPos( x, y ) ) {
|
||||||
int sys_y = y - g_pParentWnd->GetGDKOffsetY();
|
Sys_Printf( "SetCursorPos failed: GetLastError()=0x%08x", GetLastError() );
|
||||||
|
}
|
||||||
SetCursorPos( sys_x, sys_y );
|
#else
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined ( __linux__ ) || defined ( __APPLE__ )
|
|
||||||
XWarpPointer( GDK_DISPLAY(), None, GDK_ROOT_WINDOW(), 0, 0, 0, 0, x, y );
|
XWarpPointer( GDK_DISPLAY(), None, GDK_ROOT_WINDOW(), 0, 0, 0, 0, x, y );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue