diff options
Diffstat (limited to 'src/clip.cpp')
-rw-r--r-- | src/clip.cpp | 47 |
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); +} |