Changeset 617 for trunk/Packages
- Timestamp:
- Sep 15, 2024, 1:31:30 PM (2 months ago)
- Location:
- trunk/Packages
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Packages/CevoComponents/DrawDlg.pas
r565 r617 25 25 procedure InitButtons; 26 26 procedure OnEraseBkgnd(var Msg: TMessage); message WM_ERASEBKGND; 27 procedure OnHitTest(var Msg: TMessage); message WM_NCHITTEST;28 27 procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 29 28 override; … … 92 91 end; 93 92 94 procedure TDrawDlg.OnHitTest(var Msg: TMessage);95 var96 I: integer;97 ControlBounds: TRect;98 Pos: TPoint;99 begin100 if BorderStyle <> TBorderStyle.bsNone then101 inherited102 else103 begin104 Pos := Point(ScaleFromNative(Integer(Msg.LParam and $ffff)),105 ScaleFromNative(Integer((Msg.LParam shr 16) and $ffff)));106 if Pos.Y >= Top + TitleHeight then107 Msg.Result := HTCLIENT108 else109 begin110 for I := 0 to ControlCount - 1 do111 if Controls[I].Visible then112 begin113 ControlBounds := Controls[I].BoundsRect;114 if (Pos.X >= Left + ControlBounds.Left) and115 (Pos.X < Left + ControlBounds.Right) and116 (Pos.Y >= Top + ControlBounds.Top) and117 (Pos.Y < Top + ControlBounds.Bottom) then118 begin119 Msg.result := HTCLIENT;120 Exit;121 end;122 end;123 Msg.Result := HTCAPTION;124 end;125 end;126 end;127 128 93 procedure TDrawDlg.MouseDown(Button: TMouseButton; Shift: TShiftState; X, 129 94 Y: Integer); … … 131 96 MousePos1: TPoint; 132 97 MousePos2: TPoint; 133 {$IFDEF UNIX}134 98 NewFormPos: TPoint; 135 {$ENDIF}136 99 begin 137 100 MousePos1 := Mouse.CursorPos; 138 101 inherited; 139 102 MousePos2 := Mouse.CursorPos; 140 {$IFDEF UNIX}141 // Only if client is not doing own mouse move handling142 103 if not Assigned(OnMouseDown) or not Assigned(OnMouseMove) or not Assigned(OnMouseUp) then begin 143 // HitTest is not supported under Linux GTK2 so use form inside move mechanizm144 104 NewFormPos := ScreenToClient(Mouse.CursorPos); 145 105 if (NewFormPos.X >= 0) and (NewFormPos.X < Width) and … … 154 114 end else MoveActive := False; 155 115 end; 156 {$ENDIF}157 116 end; 158 117 … … 163 122 inherited; 164 123 if MoveActive then begin 165 MousePos := ClientToScreen(Point(X, Y));124 MousePos := Mouse.CursorPos; 166 125 SetBounds(MoveFormPos.X + MousePos.X - MoveMousePos.X, 167 MoveFormPos.Y + MousePos.Y - MoveMousePos.Y, 168 Width, Height); 126 MoveFormPos.Y + MousePos.Y - MoveMousePos.Y, Width, Height); 169 127 end; 170 128 end; -
trunk/Packages/DpiControls/Dpi.Common.pas
r608 r617 225 225 function ScaleToNative(Value: Integer): Integer; inline; 226 226 begin 227 Result := ScreenInfo.Lookup [Value];227 Result := ScreenInfo.LookupToNative[Value]; 228 228 // Round and Trunc are fast. Ceil and Floor are slow. 229 229 // Without lookup table we would use: … … 238 238 function ScaleFromNative(Value: Integer): Integer; 239 239 begin 240 Result := Trunc(Value * ScreenInfo.FromNative); 240 Result := ScreenInfo.LookupFromNative[Value]; 241 // Round and Trunc are fast. Ceil and Floor are slow. 242 // Without lookup table we would use: 243 // Result := Floor(Value * ScreenInfo.FromNative); 241 244 end; 242 245 -
trunk/Packages/DpiControls/Dpi.Graphics.pas
r568 r617 354 354 ToNative: Double; 355 355 FromNative: Double; 356 Lookup: array[-10000..10000] of Integer; // Should be sufficient for 8K screens 356 LookupToNative: array[-10000..10000] of Integer; // Should be sufficient for 8K screens 357 LookupFromNative: array[-10000..10000] of Integer; // Should be sufficient for 8K screens 357 358 property Dpi: Integer read FDpi write SetDpi; 358 359 end; … … 1353 1354 if FDpi = AValue then Exit; 1354 1355 FDpi := AValue; 1356 1357 // Precalculate scaling coefficients 1355 1358 ToNative := ScreenInfo.Dpi / 96; 1356 1357 // Precalculate scaling coefficients1359 for I := Low(LookupToNative) to High(LookupToNative) do 1360 LookupToNative[I] := Ceil(I * ToNative); 1358 1361 FromNative := 96 / ScreenInfo.Dpi; 1359 for I := Low(Lookup ) to High(Lookup) do1360 Lookup [I] := Ceil(I * ToNative);1362 for I := Low(LookupFromNative) to High(LookupFromNative) do 1363 LookupFromNative[I] := Floor(I * FromNative); 1361 1364 end; 1362 1365
Note:
See TracChangeset
for help on using the changeset viewer.