mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-15 05:19:37 +02:00
Qt: added X11 helper routine SetSkipX11Taskbar() to implement ShowInTaskbar property.
git-svn-id: trunk@26442 -
This commit is contained in:
parent
a04f5338a4
commit
47f86d679e
@ -179,6 +179,7 @@ type
|
|||||||
{$IFDEF HASX11}
|
{$IFDEF HASX11}
|
||||||
function IsCurrentDesktop(AWidget: QWidgetH): Boolean;
|
function IsCurrentDesktop(AWidget: QWidgetH): Boolean;
|
||||||
function GetWindowManager: String;
|
function GetWindowManager: String;
|
||||||
|
procedure SetSkipX11Taskbar(Widget: QWidgetH; const ASkipTaskBar: Boolean);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
const
|
const
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
{%MainUnit qtint.pp}
|
||||||
function IsCurrentDesktop(AWidget: QWidgetH): Boolean;
|
function IsCurrentDesktop(AWidget: QWidgetH): Boolean;
|
||||||
var
|
var
|
||||||
Display: PDisplay;
|
Display: PDisplay;
|
||||||
@ -121,3 +122,43 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure SetSkipX11Taskbar(Widget: QWidgetH; const ASkipTaskBar: Boolean);
|
||||||
|
const
|
||||||
|
_NET_WM_STATE_REMOVE = 0;
|
||||||
|
_NET_WM_STATE_ADD = 1;
|
||||||
|
_NET_WM_STATE_TOGGLE = 2;
|
||||||
|
var
|
||||||
|
Display: PDisplay;
|
||||||
|
RootWin: TWindow;
|
||||||
|
ScreenNum: Integer;
|
||||||
|
XClient: TXClientMessageEvent;
|
||||||
|
WMAtom: TAtom;
|
||||||
|
begin
|
||||||
|
Display := QX11Info_display();
|
||||||
|
|
||||||
|
if Display = nil then
|
||||||
|
exit;
|
||||||
|
ScreenNum := QX11Info_appScreen();
|
||||||
|
RootWin := XRootWindow(Display, ScreenNum);
|
||||||
|
|
||||||
|
// _NET_WM_STATE_SKIP_TASKBAR
|
||||||
|
XClient._type := ClientMessage;
|
||||||
|
XClient.window := QWidget_winId(Widget);
|
||||||
|
WMAtom := XInternAtom(Display,'_NET_WM_STATE', False);
|
||||||
|
XClient.message_type := WMAtom;
|
||||||
|
XClient.format := 32;
|
||||||
|
|
||||||
|
if ASkipTaskBar then
|
||||||
|
Xclient.data.l[0] := _NET_WM_STATE_ADD
|
||||||
|
else
|
||||||
|
Xclient.data.l[0] := _NET_WM_STATE_REMOVE;
|
||||||
|
WMAtom := XInternAtom(Display,'_NET_WM_STATE_SKIP_TASKBAR', True);
|
||||||
|
Xclient.data.l[1] := WMAtom;
|
||||||
|
Xclient.data.l[2] := 0;
|
||||||
|
Xclient.data.l[3] := 0;
|
||||||
|
Xclient.data.l[4] := 0;
|
||||||
|
XSendEvent (Display, RootWin, False,
|
||||||
|
SubstructureRedirectMask or SubstructureNotifyMask,
|
||||||
|
@Xclient);
|
||||||
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user