Qt: added X11 helper routine SetSkipX11Taskbar() to implement ShowInTaskbar property.

git-svn-id: trunk@26442 -
This commit is contained in:
zeljko 2010-07-03 13:18:49 +00:00
parent a04f5338a4
commit 47f86d679e
2 changed files with 42 additions and 0 deletions

View File

@ -179,6 +179,7 @@ type
{$IFDEF HASX11}
function IsCurrentDesktop(AWidget: QWidgetH): Boolean;
function GetWindowManager: String;
procedure SetSkipX11Taskbar(Widget: QWidgetH; const ASkipTaskBar: Boolean);
{$ENDIF}
const

View File

@ -1,3 +1,4 @@
{%MainUnit qtint.pp}
function IsCurrentDesktop(AWidget: QWidgetH): Boolean;
var
Display: PDisplay;
@ -121,3 +122,43 @@ begin
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;