diff --git a/lcl/controls.pp b/lcl/controls.pp index a694cf95fe..08204e8e52 100644 --- a/lcl/controls.pp +++ b/lcl/controls.pp @@ -235,6 +235,7 @@ const crSizeAll = TCursor(-22); crLow = TCursor(-30); + crScreenCursor= Low(TCursor); // use only with Screen.BeginTempCursor/EndTempCursor to force Screen.Cursor type TCaptureMouseButtons = set of TMouseButton; diff --git a/lcl/include/customform.inc b/lcl/include/customform.inc index 398530b362..0f27820781 100644 --- a/lcl/include/customform.inc +++ b/lcl/include/customform.inc @@ -2948,7 +2948,7 @@ begin Screen.FSaveFocusedList.Insert(0, Screen.FFocusedForm); Screen.FFocusedForm := Self; Screen.MoveFormToFocusFront(Self); - Screen.BeginTempCursor(crDefault); + Screen.BeginTempCursor(crScreenCursor); ModalResult := 0; try @@ -3006,7 +3006,7 @@ begin end; finally RestoreFocusState(SavedFocusState); - Screen.EndTempCursor(crDefault); + Screen.EndTempCursor(crScreenCursor); if LCLIntf.IsWindow(ActiveWindow) then SetActiveWindow(ActiveWindow); Exclude(FFormState, fsModal); diff --git a/lcl/include/screen.inc b/lcl/include/screen.inc index 5f5435b929..4735161ce9 100644 --- a/lcl/include/screen.inc +++ b/lcl/include/screen.inc @@ -857,10 +857,13 @@ end; function TScreen.GetRealCursor: TCursor; begin - if Length(FTempCursors)>0 then + if (Length(FTempCursors)>0) and (FTempCursors[High(FTempCursors)]<>crScreenCursor) then Result := FTempCursors[High(FTempCursors)] else - Result := Cursor; + if Cursor<>crScreenCursor then + Result := Cursor + else // Screen.Cursor=crScreenCursor - we have to use crDefault because crScreenCursor is otherwise invalid + Result := crDefault; end; function TScreen.GetSystemFont: TFont;