From 6185c6ab60b5709e7b5aaf6db94ef114cfd7c585 Mon Sep 17 00:00:00 2001 From: marc Date: Wed, 12 Aug 2009 21:43:56 +0000 Subject: [PATCH] * reverted r21200 #16af7e11b4, the removed functionality is essential when running lcl apps remote git-svn-id: trunk@21207 - --- lcl/interfaces/gtk/gtkint.pp | 4 ++++ lcl/interfaces/gtk/gtkwidgetset.inc | 2 ++ lcl/interfaces/gtk/gtkwinapi.inc | 8 ++++---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lcl/interfaces/gtk/gtkint.pp b/lcl/interfaces/gtk/gtkint.pp index 26603914b5..e2f24a900f 100644 --- a/lcl/interfaces/gtk/gtkint.pp +++ b/lcl/interfaces/gtk/gtkint.pp @@ -131,6 +131,10 @@ type FDragImageListIcon: PGtkWidget; FDragHotStop: TPoint; + // cache for WindowFromPoint + FLastWFPMousePos: TPoint; + FLastWFPResult: HWND; + function CreateThemeServices: TThemeServices; override; function GetDeviceContextClass: TGtkDeviceContextClass; virtual; abstract; public diff --git a/lcl/interfaces/gtk/gtkwidgetset.inc b/lcl/interfaces/gtk/gtkwidgetset.inc index f3a22d748a..32e9592f5f 100644 --- a/lcl/interfaces/gtk/gtkwidgetset.inc +++ b/lcl/interfaces/gtk/gtkwidgetset.inc @@ -181,6 +181,8 @@ begin inherited Create; + FLastWFPMousePos := Point(MaxInt, MaxInt); + {$IFDEF EnabledGtkThreading} {$IFNDEF Win32} if GetThreadManager(TM) and Assigned(TM.InitManager) and g_thread_supported then diff --git a/lcl/interfaces/gtk/gtkwinapi.inc b/lcl/interfaces/gtk/gtkwinapi.inc index 61fdf42b01..2e1582effc 100644 --- a/lcl/interfaces/gtk/gtkwinapi.inc +++ b/lcl/interfaces/gtk/gtkwinapi.inc @@ -9695,8 +9695,8 @@ var p: TPoint; begin // return cached value to prevent heavy gdk_window_at_pointer call - //if (APoint = FLastWFPMousePos) and GTK_IS_WIDGET(Pointer(FLastWFPResult)) then - // Exit(FLastWFPResult); + if (APoint = FLastWFPMousePos) and GTK_IS_WIDGET(Pointer(FLastWFPResult)) then + Exit(FLastWFPResult); //DebugLn('WindowFromPoint: ', dbgs(APoint)); //DumpStack; Result := 0; @@ -9712,8 +9712,8 @@ begin Widget := gtk_get_event_widget(@ev); Result := PtrUInt(Widget); end; - //FLastWFPMousePos := APoint; - //FLastWFPResult := Result; + FLastWFPMousePos := APoint; + FLastWFPResult := Result; end; //##apiwiz##eps## // Do not remove