mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 05:29:29 +02:00
Gtk2: fixed wrong result from ScreenToClient for child controls. issue #21366
git-svn-id: trunk@35574 -
This commit is contained in:
parent
eadeec3933
commit
a31497d03b
@ -7595,16 +7595,14 @@ function TGtk2WidgetSet.ScreenToClient(Handle : HWND; var P : TPoint) : Integer;
|
|||||||
var
|
var
|
||||||
X, Y: Integer;
|
X, Y: Integer;
|
||||||
Widget: PGTKWidget;
|
Widget: PGTKWidget;
|
||||||
Window: PgdkWindow;
|
Window: PGdkWindow;
|
||||||
Begin
|
Begin
|
||||||
|
if Handle = 0 then
|
||||||
if Handle = 0
|
begin
|
||||||
then begin
|
|
||||||
X := 0;
|
X := 0;
|
||||||
Y := 0;
|
Y := 0;
|
||||||
end
|
end else
|
||||||
else
|
begin
|
||||||
begin
|
|
||||||
Widget := GetFixedWidget(pgtkwidget(Handle));
|
Widget := GetFixedWidget(pgtkwidget(Handle));
|
||||||
if Widget = nil then
|
if Widget = nil then
|
||||||
Widget := pgtkwidget(Handle);
|
Widget := pgtkwidget(Handle);
|
||||||
@ -7612,13 +7610,24 @@ Begin
|
|||||||
begin
|
begin
|
||||||
X := 0;
|
X := 0;
|
||||||
Y := 0;
|
Y := 0;
|
||||||
end
|
end else
|
||||||
else begin
|
begin
|
||||||
Window:=GetControlWindow(Widget);
|
Window := GetControlWindow(Widget);
|
||||||
{$IFDEF DebugGDK}BeginGDKErrorTrap;{$ENDIF}
|
{$IFDEF DebugGDK}BeginGDKErrorTrap;{$ENDIF}
|
||||||
if Window<>nil then
|
if Window <> nil then
|
||||||
gdk_window_get_origin(Window, @X, @Y)
|
begin
|
||||||
else begin
|
gdk_window_get_origin(Window, @X, @Y);
|
||||||
|
// set pos to client coords. issue #21366
|
||||||
|
if GTK_WIDGET_NO_WINDOW(Widget) and (gtk_widget_get_parent(Widget) <> nil) then
|
||||||
|
begin
|
||||||
|
P.X := P.X - X - Widget^.allocation.x;
|
||||||
|
P.Y := P.Y - Y - Widget^.allocation.y;
|
||||||
|
Result := -1;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end else
|
||||||
|
begin
|
||||||
X:=0;
|
X:=0;
|
||||||
Y:=0;
|
Y:=0;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user