summaryrefslogtreecommitdiffstats
path: root/src/clip.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/clip.cpp')
-rw-r--r--src/clip.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/clip.cpp b/src/clip.cpp
new file mode 100644
index 0000000..de71d2b
--- /dev/null
+++ b/src/clip.cpp
@@ -0,0 +1,47 @@
+#include "clip.h"
+
+#include <qwidget.h>
+#include <qbitmap.h>
+#include <qpainter.h>
+#include <netwm.h>
+#include <netwm_def.h>
+#include <kwin.h>
+
+#include <kdebug.h>
+
+clip::clip(QWidget *parent, const char *name) : QWidget(parent, name, WStyle_Customize | WStyle_NoBorder | WNoAutoErase | WDestructiveClose | WMouseNoMask | WStyle_StaysOnTop)
+{
+ info = new NETWinInfo( qt_xdisplay(), winId(), qt_xrootwin(), NET::WMState);
+ info->setDesktop( NETWinInfo::OnAllDesktops );
+
+ info->setState(NETWinInfo::SkipTaskbar | NETWinInfo::SkipPager, NETWinInfo::SkipTaskbar | NETWinInfo::SkipPager);
+ hide();
+ setBackgroundMode(NoBackground);
+
+ KWin::setOnAllDesktops(winId(), true);
+ KWin::setState(winId(), NET::SkipTaskbar | NET::SkipPager);
+ KWin::setType(winId(), NET::Dock);
+
+ setCaption("kooldock clipping window");
+}
+
+clip::~clip()
+{
+}
+
+void clip::clipDesktop(int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8,int p9,int p10,int p11,int p12)
+{
+KWin::setExtendedStrut(winId(), p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
+}
+
+void clip::paintEvent(QPaintEvent *)
+{
+ QBitmap bm(size());
+ QPainter mp;
+
+ mp.begin(&bm, this);
+ mp.fillRect(rect(), Qt::black);
+ mp.end();
+
+ setMask(bm);
+}