mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-20 12:19:31 +02:00
LCL/CheckCombobox: Fix "no checkbox/no items issue" in cocoa (issue #39427)
This commit is contained in:
parent
104bb3cabf
commit
bc0b673eb6
65
lcl/interfaces/cocoa/cocoawscomboex.pas
Normal file
65
lcl/interfaces/cocoa/cocoawscomboex.pas
Normal file
@ -0,0 +1,65 @@
|
||||
unit CocoaWSComboEx;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
{$WARN 5024 off : Parameter "$1" not used}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
////////////////////////////////////////////////////
|
||||
// I M P O R T A N T
|
||||
////////////////////////////////////////////////////
|
||||
// To get as little as possible circles,
|
||||
// uncomment only when needed for registration
|
||||
////////////////////////////////////////////////////
|
||||
Classes, SysUtils,
|
||||
StdCtrls, Controls, Graphics, Forms, Themes,
|
||||
////////////////////////////////////////////////////
|
||||
ComboEx, WSComboEx;
|
||||
|
||||
type
|
||||
{ TCocoaCustomComboBoxEx }
|
||||
|
||||
TCocoaCustomComboBoxEx = class(TWSCustomComboBoxEx)
|
||||
published
|
||||
class function GetFocusedEditableMainItemNoDD(const ACombo: TCustomComboboxEx;
|
||||
ADroppedDown, AMainItem: Boolean): boolean; override;
|
||||
end;
|
||||
|
||||
{ TCocoaWSCustomCheckCombo }
|
||||
|
||||
TCocoaWSCustomCheckCombo = class(TWSCustomCheckCombo)
|
||||
published
|
||||
class function GetFocusedEditableMainItemNoDD(const ACombo: TCustomCheckCombo;
|
||||
ADroppedDown: Boolean; ALeft: Integer): boolean; override;
|
||||
class function GetRejectDropdown(const {%H-}ACombo: TCustomCheckCombo;
|
||||
ALeft, {%H-}ARight: Integer): Boolean; override;
|
||||
end;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
{ TCocoaWSCustomComboBoxEx }
|
||||
|
||||
class function TCocoaWSCustomComboBoxEx.GetFocusedEditableMainItemNoDD(
|
||||
const ACombo: TCustomComboBoxEx; ADroppedDown, AMainItem: Boolean): boolean;
|
||||
begin
|
||||
Result := ACombo.Focused and aMainItem and not ADroppedDown;
|
||||
end;
|
||||
|
||||
{ TCocoaWSCustomCheckCombo }
|
||||
|
||||
class function TCocoaWSCustomCheckCombo.GetFocusedEditableMainItemNoDD(
|
||||
const ACombo: TCustomCheckCombo; ADroppedDown: Boolean; ALeft: Integer): boolean;
|
||||
begin
|
||||
Result := ACombo.Focused and (ALeft > 0) and not ADroppedDown;
|
||||
end;
|
||||
|
||||
class procedure TWin32WSCustomCheckCombo.GetRejectToggleOnSelect(
|
||||
const ACombo: TCustomCheckCombo; var AResult: Boolean);
|
||||
begin
|
||||
if ACombo.DroppedDown then AResult := true;
|
||||
// AResult := false;
|
||||
end;
|
||||
|
||||
end.
|
@ -5,9 +5,10 @@ unit CocoaWSFactory;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, Controls, ComCtrls, StdCtrls, Spin, PairSplitter,
|
||||
Classes, Controls, ComboEx, ComCtrls, StdCtrls, Spin, PairSplitter,
|
||||
Dialogs, ExtCtrls, Buttons, CheckLst, Forms, Menus, Calendar,
|
||||
WSLCLClasses,
|
||||
CocoaWSComboEx,
|
||||
CocoaWSCommon,
|
||||
CocoaWSButtons,
|
||||
CocoaWSExtCtrls,
|
||||
@ -568,12 +569,14 @@ end;
|
||||
// ComboEx
|
||||
function RegisterCustomComboBoxEx: Boolean; alias : 'WSRegisterCustomComboBoxEx';
|
||||
begin
|
||||
Result := False;
|
||||
RegisterWSComponent(TCustomComboBoxEx, TCocoaWSCustomComboBoxEx);
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
function RegisterCustomCheckCombo: Boolean; alias : 'WSRegisterCustomCheckCombo';
|
||||
begin
|
||||
Result := False;
|
||||
RegisterWSComponent(TCustomCheckCombo, TCocoaWSCustomCheckCombo);
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
// LazDeviceAPIs
|
||||
|
@ -374,6 +374,7 @@ begin
|
||||
t.Dependencies.AddUnit('cocoascrollers');
|
||||
t.Dependencies.AddUnit('cocoawsclipboard');
|
||||
t.Dependencies.AddUnit('cocoawschecklst');
|
||||
t.Dependencies.AddUnit('cocoawscomboex');
|
||||
t.Dependencies.AddUnit('cocoadatepicker');
|
||||
|
||||
P.Targets.AddImplicitUnit('carbon/agl.pp');
|
||||
@ -708,6 +709,7 @@ begin
|
||||
P.Targets.AddImplicitUnit('cocoa/cocoascrollers.pas');
|
||||
P.Targets.AddImplicitUnit('cocoa/cocoawsclipboard.pas');
|
||||
P.Targets.AddImplicitUnit('cocoa/cocoawschecklst.pas');
|
||||
P.Targets.AddImplicitUnit('cocoa/cocoawscomboex.pas');
|
||||
P.Targets.AddImplicitUnit('cocoa/cocoadatepicker.pas');
|
||||
|
||||
// copy the compiled file, so the IDE knows how the package was compiled
|
||||
|
@ -130,7 +130,7 @@ end;"/>
|
||||
<License Value="modified LGPL-2
|
||||
"/>
|
||||
<Version Major="2" Minor="3"/>
|
||||
<Files Count="490">
|
||||
<Files Count="491">
|
||||
<Item1>
|
||||
<Filename Value="carbon/agl.pp"/>
|
||||
<AddToUsesPkgSection Value="False"/>
|
||||
@ -2428,6 +2428,11 @@ end;"/>
|
||||
<AddToUsesPkgSection Value="False"/>
|
||||
<UnitName Value="WinCEWSComboEx"/>
|
||||
</Item490>
|
||||
<Item491>
|
||||
<Filename Value="cocoa/cocoawscomboex.pas"/>
|
||||
<AddToUsesPkgSection Value="False"/>
|
||||
<UnitName Value="CocoaWSComboEx"/>
|
||||
</Item491>
|
||||
</Files>
|
||||
<CompatibilityMode Value="True"/>
|
||||
<LazDoc Paths="../../docs/xml/lcl"/>
|
||||
|
Loading…
Reference in New Issue
Block a user