mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-23 01:39:31 +02:00
cocoa: adjusting the cursor color for the standard NSTextField controls to be oppostive of their background. bug #38033
git-svn-id: trunk@64360 -
This commit is contained in:
parent
9ffd47ce9f
commit
b508eb30dc
@ -174,6 +174,8 @@ type
|
||||
keyCaptured: Boolean;
|
||||
function lclGetCallback: ICommonCallback; override;
|
||||
function becomeFirstResponder: LCLObjCBoolean; override;
|
||||
procedure setDelegate(adelegate: NSTextDelegateProtocol); override;
|
||||
procedure lclReviseCursorColor; message 'lclReviseCursorColor';
|
||||
// keyboard
|
||||
procedure doCommandBySelector(aSelector: SEL); override;
|
||||
procedure insertNewline(sender: id); override;
|
||||
@ -756,12 +758,40 @@ begin
|
||||
else Result := nil;
|
||||
end;
|
||||
|
||||
function ReverseColor(clr: NSColor): NSColor;
|
||||
var
|
||||
r,g,b: byte;
|
||||
begin
|
||||
r := $FF xor byte(Round(clr.redComponent * 255));
|
||||
g := $FF xor byte(Round(clr.greenComponent * 255));
|
||||
b := $FF xor byte(Round(clr.blueComponent * 255));
|
||||
Result := NSColor.colorWithRed_green_blue_alpha(r / 255, g / 255, b / 255, 1);
|
||||
end;
|
||||
|
||||
function TCocoaFieldEditor.becomeFirstResponder: LCLObjCBoolean;
|
||||
begin
|
||||
if goingReadOnly then Result := false
|
||||
else Result:=inherited becomeFirstResponder;
|
||||
end;
|
||||
|
||||
procedure TCocoaFieldEditor.setDelegate(adelegate: NSTextDelegateProtocol);
|
||||
begin
|
||||
inherited setDelegate(adelegate);
|
||||
lclReviseCursorColor;
|
||||
end;
|
||||
|
||||
procedure TCocoaFieldEditor.lclReviseCursorColor;
|
||||
var
|
||||
clr :NSColor;
|
||||
begin
|
||||
if not Assigned(delegate) then Exit;
|
||||
if not (NSObject(delegate).isKindOfClass(NSTextField)) then Exit;
|
||||
clr := NSTextField(delegate).backgroundColor.colorUsingColorSpace(NSColorSpace.deviceRGBColorSpace);
|
||||
|
||||
if Assigned(clr) then
|
||||
setInsertionPointColor(ReverseColor(clr));
|
||||
end;
|
||||
|
||||
procedure TCocoaFieldEditor.doCommandBySelector(aSelector: SEL);
|
||||
begin
|
||||
inherited doCommandBySelector(aSelector);
|
||||
|
@ -999,7 +999,10 @@ end;
|
||||
|
||||
class procedure TCocoaWSCustomEdit.SetColor(const AWinControl: TWinControl);
|
||||
var
|
||||
field: TCocoaTextField;
|
||||
field : TCocoaTextField;
|
||||
w : NSWindow;
|
||||
rsp : NSResponder;
|
||||
ed : TCocoaFieldEditor;
|
||||
begin
|
||||
field := GetTextField(AWinControl);
|
||||
if not Assigned(field) then Exit;
|
||||
@ -1008,6 +1011,16 @@ begin
|
||||
field.setBackgroundColor( NSColor.textBackgroundColor )
|
||||
else
|
||||
field.setBackgroundColor( ColorToNSColor(ColorToRGB(AWinControl.Color)));
|
||||
|
||||
w := NSView(AWinControl.Handle).window;
|
||||
if not Assigned(w) then Exit;
|
||||
rsp := w.firstResponder;
|
||||
if (Assigned(rsp)) and (rsp.isKindOfClass(TCocoaFieldEditor)) then
|
||||
begin
|
||||
ed := TCocoaFieldEditor(rsp);
|
||||
if (NSObject(ed.delegate) = NSView(AWinControl.Handle)) then
|
||||
ed.lclReviseCursorColor;
|
||||
end;
|
||||
end;
|
||||
|
||||
class procedure TCocoaWSCustomEdit.SetBorderStyle(
|
||||
|
Loading…
Reference in New Issue
Block a user