瀏覽代碼

fixed GetElementAt

mattias 2 年之前
父節點
當前提交
74232bfe07
共有 1 個文件被更改,包括 7 次插入4 次删除
  1. 7 4
      src/fresnel.dom.pas

+ 7 - 4
src/fresnel.dom.pas

@@ -1148,23 +1148,26 @@ function TFresnelViewport.GetElementAt(const x, y: TFresnelLength
   var
     El: TFresnelElement;
     i: Integer;
-    aLeft, aTop: TFresnelLength;
+    aLeft, aTop, aPaddingLeft, aPaddingTop: TFresnelLength;
     BorderBox: TFresnelRect;
   begin
     Result:=nil;
     if Node=nil then exit;
     El:=Node.Element;
     if not El.Rendered then exit;
+    BorderBox:=El.RenderedBorderBox;
     if Node.NodeCount>0 then begin
-      aLeft:=El.GetRenderedCSSLength(fcaLeft,false);
-      aTop:=El.GetRenderedCSSLength(fcaTop,false);
+      aPaddingLeft:=El.GetRenderedCSSLength(fcaPaddingLeft,false);
+      aPaddingTop:=El.GetRenderedCSSLength(fcaPaddingTop,false);
+      aLeft:=BorderBox.Left+aPaddingLeft;
+      aTop:=BorderBox.Top+aPaddingTop;
+
       for i:=Node.NodeCount-1 downto 0 do
       begin
         Result:=Check(Node.Nodes[i],dx+aLeft,dy+aTop);
         if Result<>nil then exit;
       end;
     end;
-    BorderBox:=El.RenderedBorderBox;
     if (x>=BorderBox.Left+dx) and (y>=BorderBox.Top+dy)
         and (x<=BorderBox.Right+dx) and (y<=BorderBox.Right+dy) then
       Result:=El