~ubuntu-branches/ubuntu/saucy/lazarus/saucy

« back to all changes in this revision

Viewing changes to lcl/interfacebase.pp

  • Committer: Package Import Robot
  • Author(s): Paul Gevers, Abou Al Montacir, Bart Martens, Paul Gevers
  • Date: 2013-06-08 14:12:17 UTC
  • mfrom: (1.1.9)
  • Revision ID: package-import@ubuntu.com-20130608141217-7k0cy9id8ifcnutc
Tags: 1.0.8+dfsg-1
[ Abou Al Montacir ]
* New upstream major release and multiple maintenace release offering many
  fixes and new features marking a new milestone for the Lazarus development
  and its stability level.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_fixes_branch
* LCL changes:
  - LCL is now a normal package.
      + Platform independent parts of the LCL are now in the package LCLBase
      + LCL is automatically recompiled when switching the target platform,
        unless pre-compiled binaries for this target are already installed.
      + No impact on existing projects.
      + Linker options needed by LCL are no more added to projects that do
        not use the LCL package.
  - Minor changes in LCL basic classes behaviour
      + TCustomForm.Create raises an exception if a form resource is not
        found.
      + TNotebook and TPage: a new implementation of these classes was added.
      + TDBNavigator: It is now possible to have focusable buttons by setting
        Options = [navFocusableButtons] and TabStop = True, useful for
        accessibility and for devices with neither mouse nor touch screen.
      + Names of TControlBorderSpacing.GetSideSpace and GetSpace were swapped
        and are now consistent. GetSideSpace = Around + GetSpace.
      + TForm.WindowState=wsFullscreen was added
      + TCanvas.TextFitInfo was added to calculate how many characters will
        fit into a specified Width. Useful for word-wrapping calculations.
      + TControl.GetColorResolvingParent and
        TControl.GetRGBColorResolvingParent were added, simplifying the work
        to obtain the final color of the control while resolving clDefault
        and the ParentColor.
      + LCLIntf.GetTextExtentExPoint now has a good default implementation
        which works in any platform not providing a specific implementation.
        However, Widgetset specific implementation is better, when available.
      + TTabControl was reorganized. Now it has the correct class hierarchy
        and inherits from TCustomTabControl as it should.
  - New unit in the LCL:
      + lazdialogs.pas: adds non-native versions of various native dialogs,
        for example TLazOpenDialog, TLazSaveDialog, TLazSelectDirectoryDialog.
        It is used by widgetsets which either do not have a native dialog, or
        do not wish to use it because it is limited. These dialogs can also be
        used by user applications directly.
      + lazdeviceapis.pas: offers an interface to more hardware devices such
        as the accelerometer, GPS, etc. See LazDeviceAPIs
      + lazcanvas.pas: provides a TFPImageCanvas descendent implementing
        drawing in a LCL-compatible way, but 100% in Pascal.
      + lazregions.pas. LazRegions is a wholly Pascal implementation of
        regions for canvas clipping, event clipping, finding in which control
        of a region tree one an event should reach, for drawing polygons, etc.
      + customdrawncontrols.pas, customdrawndrawers.pas,
        customdrawn_common.pas, customdrawn_android.pas and
        customdrawn_winxp.pas: are the Lazarus Custom Drawn Controls -controls
        which imitate the standard LCL ones, but with the difference that they
        are non-native and support skinning.
  - New APIs added to the LCL to improve support of accessibility software
    such as screen readers.
* IDE changes:
  - Many improvments.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/New_IDE_features_since#v1.0_.282012-08-29.29
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes#IDE_Changes
* Debugger / Editor changes:
  - Added pascal sources and breakpoints to the disassembler
  - Added threads dialog.
* Components changes:
  - TAChart: many fixes and new features
  - CodeTool: support Delphi style generics and new syntax extensions.
  - AggPas: removed to honor free licencing. (Closes: Bug#708695)
[Bart Martens]
* New debian/watch file fixing issues with upstream RC release.
[Abou Al Montacir]
* Avoid changing files in .pc hidden directory, these are used by quilt for
  internal purpose and could lead to surprises during build.
[Paul Gevers]
* Updated get-orig-source target and it compinion script orig-tar.sh so that they
  repack the source file, allowing bug 708695 to be fixed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
 
35
35
uses
36
36
  Types, Classes, SysUtils, Math, LCLStrConsts, LCLType, LCLProc, LMessages,
37
 
  GraphType, GraphMath, Themes;
 
37
  FPImage, GraphType, GraphMath, IntfGraphics, Themes;
38
38
 
39
39
type
40
40
  PEventHandler = type Pointer;
63
63
    lpQT,
64
64
    lpfpGUI,
65
65
    lpNoGUI,
66
 
    lpCocoa
 
66
    lpCocoa,
 
67
    lpCustomDrawn
67
68
    );
68
69
    
69
70
  TLCLPlatforms = set of TLCLPlatform;
80
81
    lcDragDockStartOnTitleClick,// ability to start drag/dock events on title bar click
81
82
    lcAntialiasingEnabledByDefault,
82
83
                                // is amDontCare = amOn for the widgetset
83
 
    lcLMHelpSupport             // support for LM_HELP command
 
84
    lcLMHelpSupport,            // support for LM_HELP command
 
85
    lcReceivesLMClearCutCopyPasteReliably, // In Carbon we do not receive LM_CLEAR, CUT, COPY, PASTE, etc reliably, and this affects DB controls. See bug http://bugs.freepascal.org/view.php?id=20394
 
86
    lcSendsUTF8KeyPress,        // If the interface does not yet send UTF8KeyPress directly, then it will be emulated in TWinControl.CNChar
 
87
    lcAllowChildControlsInNativeControls, // Utilized by LCL-CustomDrawn so that it can inject child controls in native ones
 
88
    lcEmulatedMDI, // used for emulating MDI on widgetsets which does not provide native MDI handling
 
89
    lcAccessibilitySupport      // Indicates that accessibility is implemented, mostly for TCustomControl descendents as native widgests should have in-built accessibility
84
90
  );
85
91
 
86
92
  { TDialogButton }
134
140
    FThemeServices: TThemeServices;
135
141
    procedure PassCmdLineOptions; virtual;
136
142
    function CreateThemeServices: TThemeServices; virtual;
 
143
    function GetAppHandle: THandle; virtual;
 
144
    procedure SetAppHandle(const AValue: THandle); virtual;
137
145
  public
138
146
    constructor Create; virtual;
139
147
    procedure BeforeDestruction;override;
151
159
    procedure AppSetVisible(const AVisible: Boolean); virtual;
152
160
    function AppRemoveStayOnTopFlags(const ASystemTopAlso: Boolean = False): Boolean; virtual;
153
161
    function AppRestoreStayOnTopFlags(const ASystemTopAlso: Boolean = False): Boolean; virtual;
 
162
    procedure AppSetMainFormOnTaskBar(const DoSet: Boolean); virtual;
154
163
    
155
164
    function  LCLPlatform: TLCLPlatform; virtual; abstract;
156
165
    function  GetLCLCapability(ACapability: TLCLCapability): PtrUInt; virtual;
159
168
    procedure DCSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor); virtual; abstract;
160
169
    procedure DCRedraw(CanvasHandle: HDC); virtual; abstract;
161
170
    procedure DCSetAntialiasing(CanvasHandle: HDC; AEnabled: Boolean); virtual;
162
 
    procedure SetDesigning(AComponent: TComponent); virtual; abstract;
 
171
    procedure SetDesigning(AComponent: TComponent); virtual;
163
172
 
164
173
    function  InitStockFont(AFont: TObject; AStockFont: TStockFont): Boolean; virtual;
165
174
    function  IsHelpKey(Key: Word; Shift: TShiftState): Boolean; virtual;
167
176
    // create and destroy
168
177
    function CreateTimer(Interval: integer; TimerProc: TWSTimerProc): THandle; virtual; abstract;
169
178
    function DestroyTimer(TimerHandle: THandle): boolean; virtual; abstract;
170
 
    function AppHandle: Thandle; virtual;
 
179
    property AppHandle: THandle read GetAppHandle write SetAppHandle;
171
180
 
172
181
    {$DEFINE IF_BASE_MEMBER}
173
182
    {$I winapih.inc}
188
197
      'qt',
189
198
      'fpgui',
190
199
      'nogui',
191
 
      'cocoa'
 
200
      'cocoa',
 
201
      'customdrawn'
192
202
    );
193
203
    
194
204
  { Constants for the routine TWidgetSet.GetLCLCapability }
222
232
 
223
233
implementation
224
234
 
225
 
const
226
 
  UNKNOWN_VK_PREFIX = 'Word(''';
227
 
  UNKNOWN_VK_POSTFIX = ''')';
228
 
 
229
235
{ TDialogButtons }
230
236
 
231
237
procedure TDialogButtons.SetCancelButton(const AValue: TDialogButton);