2076e458d3
Xcb::GeometryHints is a convenient wrapper around the size hints as described in ICCCM combined with the sanity checks so far applied by KWin after reading the property. Instead of accessing the members of the property structure, we are now using the convenience methods. During ::manage no further actions are triggered when reading the size hints. Only when they are read later on the previous checks are applied. During ::manage they can be ignored as it had a dedicated isManaged check. The method ::resizeWithCheck got a new argument of type xcb_gravity_t which defaults to 0. This is needed from ::configureRequest which so far temporarily changed the xSizeHints structure. By passing as an argument this is no longer needed. REVIEW: 122185
67 lines
2 KiB
C++
67 lines
2 KiB
C++
/********************************************************************
|
|
KWin - the KDE window manager
|
|
This file is part of the KDE project.
|
|
|
|
Copyright (c) 2003, Karol Szwed <kszwed@kde.org>
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*********************************************************************/
|
|
|
|
#include "geometrytip.h"
|
|
|
|
namespace KWin
|
|
{
|
|
|
|
GeometryTip::GeometryTip(const Xcb::GeometryHints* xSizeHints):
|
|
QLabel(0)
|
|
{
|
|
setObjectName(QLatin1String("kwingeometry"));
|
|
setMargin(1);
|
|
setIndent(0);
|
|
setLineWidth(1);
|
|
setFrameStyle(QFrame::Raised | QFrame::StyledPanel);
|
|
setAlignment(Qt::AlignCenter | Qt::AlignTop);
|
|
setWindowFlags(Qt::X11BypassWindowManagerHint);
|
|
sizeHints = xSizeHints;
|
|
}
|
|
|
|
GeometryTip::~GeometryTip()
|
|
{
|
|
}
|
|
|
|
void GeometryTip::setGeometry(const QRect& geom)
|
|
{
|
|
int w = geom.width();
|
|
int h = geom.height();
|
|
|
|
if (sizeHints) {
|
|
if (sizeHints->hasResizeIncrements()) {
|
|
w = (w - sizeHints->baseSize().width()) / sizeHints->resizeIncrements().width();
|
|
h = (h - sizeHints->baseSize().height()) / sizeHints->resizeIncrements().height();
|
|
}
|
|
}
|
|
|
|
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"
|