Ignore:
Timestamp:
Sep 15, 2024, 1:31:30 PM (2 months ago)
Author:
chronos
Message:
  • Fixed: City screen rename right mouse click didn't work on Windows due to window title are. Change to behave the same way as on Linux.
  • Fixed: Allow full screen switching in editor and movie mode.
  • Modified: Precalculate scaling coefficients also for from native values conversions for faster speed.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Packages/CevoComponents/DrawDlg.pas

    r565 r617  
    2525    procedure InitButtons;
    2626    procedure OnEraseBkgnd(var Msg: TMessage); message WM_ERASEBKGND;
    27     procedure OnHitTest(var Msg: TMessage); message WM_NCHITTEST;
    2827    procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    2928      override;
     
    9291end;
    9392
    94 procedure TDrawDlg.OnHitTest(var Msg: TMessage);
    95 var
    96   I: integer;
    97   ControlBounds: TRect;
    98   Pos: TPoint;
    99 begin
    100   if BorderStyle <> TBorderStyle.bsNone then
    101     inherited
    102   else
    103   begin
    104     Pos := Point(ScaleFromNative(Integer(Msg.LParam and $ffff)),
    105       ScaleFromNative(Integer((Msg.LParam shr 16) and $ffff)));
    106     if Pos.Y >= Top + TitleHeight then
    107       Msg.Result := HTCLIENT
    108     else
    109     begin
    110       for I := 0 to ControlCount - 1 do
    111         if Controls[I].Visible then
    112         begin
    113           ControlBounds := Controls[I].BoundsRect;
    114           if (Pos.X >= Left + ControlBounds.Left) and
    115             (Pos.X < Left + ControlBounds.Right) and
    116             (Pos.Y >= Top + ControlBounds.Top) and
    117             (Pos.Y < Top + ControlBounds.Bottom) then
    118           begin
    119             Msg.result := HTCLIENT;
    120             Exit;
    121           end;
    122         end;
    123       Msg.Result := HTCAPTION;
    124     end;
    125   end;
    126 end;
    127 
    12893procedure TDrawDlg.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
    12994  Y: Integer);
     
    13196  MousePos1: TPoint;
    13297  MousePos2: TPoint;
    133 {$IFDEF UNIX}
    13498  NewFormPos: TPoint;
    135 {$ENDIF}
    13699begin
    137100  MousePos1 := Mouse.CursorPos;
    138101  inherited;
    139102  MousePos2 := Mouse.CursorPos;
    140   {$IFDEF UNIX}
    141   // Only if client is not doing own mouse move handling
    142103  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 mechanizm
    144104    NewFormPos := ScreenToClient(Mouse.CursorPos);
    145105    if (NewFormPos.X >= 0) and (NewFormPos.X < Width) and
     
    154114    end else MoveActive := False;
    155115  end;
    156   {$ENDIF}
    157116end;
    158117
     
    163122  inherited;
    164123  if MoveActive then begin
    165     MousePos := ClientToScreen(Point(X, Y));
     124    MousePos := Mouse.CursorPos;
    166125    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);
    169127  end;
    170128end;
Note: See TracChangeset for help on using the changeset viewer.