mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 17:39:20 +02:00
Cocoa: improve Direction in TUpDown #41792
This commit is contained in:
parent
7cdf29515d
commit
06df910f7f
@ -143,25 +143,59 @@ end;
|
|||||||
|
|
||||||
procedure TCocoaStepper.stepperAction(sender: NSObject);
|
procedure TCocoaStepper.stepperAction(sender: NSObject);
|
||||||
var
|
var
|
||||||
newval : Double;
|
|
||||||
allowChange : Boolean;
|
allowChange : Boolean;
|
||||||
updownpress : Boolean;
|
updownpress : Boolean;
|
||||||
|
|
||||||
|
function upOrDownWithoutWrap: Boolean;
|
||||||
|
begin
|
||||||
|
if self.doubleValue > self.lastValue then begin
|
||||||
|
Result:= True;
|
||||||
|
end else if self.doubleValue > self.lastValue then begin
|
||||||
|
Result:= False;
|
||||||
|
end else begin
|
||||||
|
if self.doubleValue = self.maxValue then
|
||||||
|
Result:= True
|
||||||
|
else
|
||||||
|
Result:= False;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function upOrDownWithWrap: Boolean;
|
||||||
|
begin
|
||||||
|
if (self.doubleValue=self.minValue) and (self.lastValue=self.maxValue) then
|
||||||
|
Result:= True
|
||||||
|
else if (self.doubleValue=self.maxValue) and (self.lastValue=self.minValue) then
|
||||||
|
Result:= False
|
||||||
|
else if self.doubleValue > self.lastValue then
|
||||||
|
Result:= True
|
||||||
|
else
|
||||||
|
Result:= False;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function upOrDown: Boolean;
|
||||||
|
begin
|
||||||
|
if self.valueWraps then
|
||||||
|
Result:= upOrDownWithWrap
|
||||||
|
else
|
||||||
|
Result:= upOrDownWithoutWrap;
|
||||||
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
newval := doubleValue;
|
allowChange:= true;
|
||||||
allowChange := true;
|
updownpress:= upOrDown;
|
||||||
updownpress := newval > lastValue;
|
|
||||||
|
|
||||||
if Assigned(callback) then begin
|
if Assigned(callback) then begin
|
||||||
callback.BeforeChange(allowChange);
|
callback.BeforeChange( allowChange );
|
||||||
callback.Change(newval, updownpress, allowChange);
|
callback.Change(self.doubleValue, updownpress, allowChange);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if not allowChange then
|
if not allowChange then
|
||||||
setDoubleValue(lastValue)
|
setDoubleValue( self.lastValue )
|
||||||
else
|
else
|
||||||
lastValue := doubleValue;
|
self.lastValue:= doubleValue;
|
||||||
|
|
||||||
if Allowchange and Assigned(callback) then callback.UpdownClick(updownpress);
|
if allowChange and Assigned(callback) then
|
||||||
|
callback.UpdownClick( updownpress );
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCocoaStepper.mouseDown(event: NSEvent);
|
procedure TCocoaStepper.mouseDown(event: NSEvent);
|
||||||
|
@ -221,7 +221,10 @@ begin
|
|||||||
//lResult.setControlSize(NSSmallControlSize);
|
//lResult.setControlSize(NSSmallControlSize);
|
||||||
lResult.setTarget(lResult);
|
lResult.setTarget(lResult);
|
||||||
lResult.setAction(objcselector('stepperAction:'));
|
lResult.setAction(objcselector('stepperAction:'));
|
||||||
|
lResult.setMinValue( 0 );
|
||||||
|
lResult.setMaxValue( 100 );
|
||||||
|
lResult.setValueWraps( False );
|
||||||
|
lResult.setAutorepeat( True );
|
||||||
end;
|
end;
|
||||||
Result := TLCLHandle(lResult);
|
Result := TLCLHandle(lResult);
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user