diff options
Diffstat (limited to 'kwin/geometrytip.cpp')
-rw-r--r-- | kwin/geometrytip.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/kwin/geometrytip.cpp b/kwin/geometrytip.cpp new file mode 100644 index 000000000..c8a046950 --- /dev/null +++ b/kwin/geometrytip.cpp @@ -0,0 +1,63 @@ +/***************************************************************** + KWin - the KDE window manager + This file is part of the KDE project. + +Copyright (c) 2003, Karol Szwed <[email protected]> + +You can Freely distribute this program under the GNU General Public +License. See the file "COPYING" for the exact licensing terms. +******************************************************************/ + +#include "geometrytip.h" + +namespace KWinInternal +{ + +GeometryTip::GeometryTip( const XSizeHints* xSizeHints, bool save_under ): + QLabel(NULL, "kwingeometry" ) + { + setMargin(1); + setIndent(0); + setLineWidth(1); + setFrameStyle( QFrame::Raised | QFrame::StyledPanel ); + setAlignment( AlignCenter | AlignTop ); + sizeHints = xSizeHints; + if( save_under ) + { + XSetWindowAttributes attr; + attr.save_under = True; // use saveunder if possible to avoid weird effects in transparent mode + XChangeWindowAttributes( qt_xdisplay(), winId(), CWSaveUnder, &attr ); + } + } + +GeometryTip::~GeometryTip() + { + } + +void GeometryTip::setGeometry( const QRect& geom ) + { + int w = geom.width(); + int h = geom.height(); + + if (sizeHints) + { + if (sizeHints->flags & PResizeInc) + { + w = ( w - sizeHints->base_width ) / sizeHints->width_inc; + h = ( h - sizeHints->base_height ) / sizeHints->height_inc; + } + } + + h = QMAX( h, 0 ); // in case of isShade() and PBaseSize + QString pos; + pos.sprintf( "%+d,%+d<br>(<b>%d x %d</b>)", + geom.x(), geom.y(), w, h ); + setText( pos ); + adjustSize(); + move( geom.x() + ((geom.width() - width()) / 2), + geom.y() + ((geom.height() - height()) / 2) ); + } + +} // namespace + +#include "geometrytip.moc" |