mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-30 11:49:13 +02:00
LCL: added IsWindow(HWND), implemeted IsWindow() for qt, gtk and gtk2.
git-svn-id: trunk@24283 -
This commit is contained in:
parent
b2f0afcdb6
commit
caf4b2dd3f
@ -1201,6 +1201,11 @@ begin
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
function TWidgetSet.IsWindow(handle: HWND): boolean;
|
||||
begin
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
function TWidgetSet.IsWindowEnabled(handle: HWND): boolean;
|
||||
begin
|
||||
Result := false;
|
||||
|
@ -607,6 +607,11 @@ begin
|
||||
Result := WidgetSet.IsIconic(Handle);
|
||||
end;
|
||||
|
||||
function IsWindow(handle: HWND): boolean;
|
||||
begin
|
||||
Result := WidgetSet.IsWindow(Handle);
|
||||
end;
|
||||
|
||||
function IsWindowEnabled(handle: HWND): boolean;
|
||||
begin
|
||||
Result := WidgetSet.IsWindowEnabled(Handle);
|
||||
|
@ -175,6 +175,7 @@ function InvalidateRgn(Handle: HWND; Rgn: HRGN; Erase: Boolean): Boolean; {$IFDE
|
||||
function IsDBCSLeadByte(TestChar: Byte): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||
//function IsRectEmpty --> independent
|
||||
function IsIconic(handle: HWND): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||
function IsWindow(handle: HWND): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||
function IsWindowEnabled(handle: HWND): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||
function IsWindowVisible(handle: HWND): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||
function IsZoomed(handle: HWND): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||
|
@ -6917,6 +6917,12 @@ begin
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function TGTKWidgetSet.IsWindow(handle: HWND): boolean;
|
||||
begin
|
||||
if Handle = 0 then
|
||||
Exit(False);
|
||||
Result := GtkWidgetIsA(PGtkWidget(Handle), GTK_TYPE_WINDOW);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
function TGtkWidgetSet.IsWindowEnabled(handle: HWND): boolean;
|
||||
|
@ -142,6 +142,7 @@ procedure InitializeCriticalSection(var CritSection: TCriticalSection); Override
|
||||
function IntersectClipRect(dc: hdc; Left, Top, Right, Bottom: Integer): Integer; override;
|
||||
function InvalidateRect(aHandle : HWND; Rect : pRect; bErase : Boolean) : Boolean; override;
|
||||
function IsIconic(handle: HWND): boolean; override;
|
||||
function IsWindow(handle: HWND): boolean; override;
|
||||
function IsWindowEnabled(handle: HWND): boolean; override;
|
||||
function IsWindowVisible(handle: HWND): boolean; override;
|
||||
function IsZoomed(handle: HWND): boolean; override;
|
||||
|
@ -42,7 +42,7 @@ uses
|
||||
// Bindings - qt4 must come first to avoid type redefinition problems
|
||||
qt4,
|
||||
// FPC
|
||||
Classes, SysUtils, Math, Types,
|
||||
Classes, SysUtils, Math, Types, maps,
|
||||
// LCL
|
||||
InterfaceBase, LCLProc, LCLType, LMessages, LCLMessageGlue, LCLStrConsts,
|
||||
Controls, ExtCtrls, Forms,
|
||||
@ -59,6 +59,8 @@ type
|
||||
App: QApplicationH;
|
||||
FOverrideCursor: TObject;
|
||||
SavedDCList: TList;
|
||||
CriticalSection: TRTLCriticalSection;
|
||||
SavedHandlesList: TMap;
|
||||
// global hooks
|
||||
FAppEvenFilterHook: QObject_hookH;
|
||||
FAppFocusChangedHook: QApplication_hookH;
|
||||
@ -121,6 +123,11 @@ type
|
||||
function IsValidDC(const DC: HDC): Boolean; virtual;
|
||||
function IsValidGDIObject(const GDIObject: HGDIOBJ): Boolean; virtual;
|
||||
|
||||
// qt object handles map
|
||||
procedure AddHandle(AHandle: TObject);
|
||||
procedure RemoveHandle(AHandle: TObject);
|
||||
function IsValidHandle(AHandle: HWND): Boolean;
|
||||
|
||||
// drag image list
|
||||
function DragImageList_BeginDrag(AImage: QImageH; AHotSpot: TPoint): Boolean;
|
||||
procedure DragImageList_EndDrag;
|
||||
|
@ -32,6 +32,8 @@ begin
|
||||
ClearCachedColors;
|
||||
FDockImage := nil;
|
||||
FDragImageLock := False;
|
||||
System.InitCriticalSection(CriticalSection);
|
||||
SavedHandlesList := TMap.Create(TMapIdType(ituPtrSize), SizeOf(TObject));
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -59,6 +61,14 @@ begin
|
||||
|
||||
ClearCachedColors;
|
||||
|
||||
if SavedHandlesList <> nil then
|
||||
begin
|
||||
SavedHandlesList.Free;
|
||||
SavedHandlesList := nil;
|
||||
end;
|
||||
|
||||
System.DoneCriticalsection(CriticalSection);
|
||||
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
@ -456,6 +466,33 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TQtWidgetSet.AddHandle(AHandle: TObject);
|
||||
begin
|
||||
System.EnterCriticalsection(CriticalSection);
|
||||
if not SavedHandlesList.HasId(AHandle) then
|
||||
SavedHandlesList.Add(AHandle, AHandle);
|
||||
System.LeaveCriticalsection(CriticalSection);
|
||||
end;
|
||||
|
||||
procedure TQtWidgetSet.RemoveHandle(AHandle: TObject);
|
||||
begin
|
||||
System.EnterCriticalsection(CriticalSection);
|
||||
if SavedHandlesList.HasId(AHandle) then
|
||||
SavedHandlesList.Delete(AHandle);
|
||||
System.LeaveCriticalsection(CriticalSection);
|
||||
end;
|
||||
|
||||
function TQtWidgetSet.IsValidHandle(AHandle: HWND): Boolean;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
if (AHandle = 0) then
|
||||
Exit(False);
|
||||
System.EnterCriticalsection(CriticalSection);
|
||||
Result := SavedHandlesList.HasId(TObject(AHandle));
|
||||
System.LeaveCriticalsection(CriticalSection);
|
||||
end;
|
||||
|
||||
function TQtWidgetSet.DragImageList_BeginDrag(AImage: QImageH;
|
||||
AHotSpot: TPoint): Boolean;
|
||||
var
|
||||
|
@ -207,6 +207,7 @@ type
|
||||
function hasFocus: Boolean; virtual;
|
||||
function isMinimized: Boolean;
|
||||
function isMaximized: Boolean;
|
||||
function IsWindow: Boolean;
|
||||
procedure lowerWidget; virtual;
|
||||
procedure move(ANewLeft, ANewTop: Integer);
|
||||
procedure preferredSize(var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); virtual;
|
||||
@ -1477,7 +1478,8 @@ begin
|
||||
// set Handle->QWidget map
|
||||
setProperty(Widget, 'lclwidget', Int64(PtrUInt(Self)));
|
||||
FillChar(FPaintData, sizeOf(FPaintData), 0);
|
||||
|
||||
|
||||
QtWidgetSet.AddHandle(Self);
|
||||
// set focus policy
|
||||
if (LCLObject <> nil) and not (Self is TQtMainWindow) then
|
||||
setFocusPolicy(QtClickFocus);
|
||||
@ -1517,6 +1519,7 @@ begin
|
||||
|
||||
// set Handle->QWidget map
|
||||
setProperty(Widget, 'lclwidget', Int64(PtrUInt(Self)));
|
||||
QtWidgetSet.AddHandle(Self);
|
||||
|
||||
FillChar(FPaintData, sizeOf(FPaintData), 0);
|
||||
|
||||
@ -1547,6 +1550,7 @@ end;
|
||||
|
||||
procedure TQtWidget.DeInitializeWidget;
|
||||
begin
|
||||
QtWidgetSet.RemoveHandle(Self);
|
||||
if Widget <> nil then
|
||||
DetachEvents;
|
||||
|
||||
@ -3255,6 +3259,11 @@ begin
|
||||
Result := QWidget_isMaximized(Widget);
|
||||
end;
|
||||
|
||||
function TQtWidget.IsWindow: Boolean;
|
||||
begin
|
||||
Result := QWidget_isWindow(Widget);
|
||||
end;
|
||||
|
||||
procedure TQtWidget.lowerWidget;
|
||||
begin
|
||||
QWidget_lower(Widget);
|
||||
@ -8860,6 +8869,7 @@ begin
|
||||
TextColorRole := QPaletteText;
|
||||
Widget := CreateWidget(FParams);
|
||||
setProperty(Widget, 'lclwidget', Int64(PtrUInt(Self)));
|
||||
QtWidgetSet.AddHandle(Self);
|
||||
end;
|
||||
|
||||
constructor TQtMenu.Create(const AMenuItem: TMenuItem);
|
||||
@ -10849,6 +10859,7 @@ begin
|
||||
FDesignControl := QWidget_create(Result);
|
||||
QWidget_setMouseTracking(FDesignControl, True);
|
||||
setProperty(FDesignControl, 'lclwidget', Int64(PtrUInt(Self)));
|
||||
QtWidgetSet.AddHandle(Self);
|
||||
BringDesignerToFront;
|
||||
end;
|
||||
|
||||
|
@ -3833,6 +3833,11 @@ begin
|
||||
Result := TQtWidget(Handle).isMinimized;
|
||||
end;
|
||||
|
||||
function TQtWidgetSet.IsWindow(handle: HWND): boolean;
|
||||
begin
|
||||
Result := IsValidHandle(Handle) and TQtWidget(Handle).IsWindow;
|
||||
end;
|
||||
|
||||
function TQtWidgetSet.IsWindowEnabled(Handle: HWND): boolean;
|
||||
begin
|
||||
Result := TQtWidget(Handle).getEnabled;
|
||||
|
@ -142,6 +142,7 @@ function InvalidateRect(aHandle : HWND; Rect : pRect; bErase : Boolean) : Boolea
|
||||
procedure InitializeCriticalSection(var CritSection: TCriticalSection); override;
|
||||
function IntersectClipRect(dc: hdc; Left, Top, Right, Bottom: Integer): Integer; override;
|
||||
function IsIconic(Handle: HWND): boolean; override;
|
||||
function IsWindow(handle: HWND): boolean; override;
|
||||
function IsWindowEnabled(Handle: HWND): boolean; override;
|
||||
function IsWindowVisible(Handle: HWND): boolean; override;
|
||||
function IsZoomed(Handle: HWND): boolean; override;
|
||||
|
Loading…
Reference in New Issue
Block a user