Patch by Knut Johansson to hide maximized window borders
BUG: 105924 svn path=/trunk/KDE/kdebase/kwin/; revision=418348
This commit is contained in:
parent
8d3807645d
commit
2e71a5d3cd
1 changed files with 14 additions and 8 deletions
|
@ -382,25 +382,27 @@ bool RedmondDeco::decorationBehaviour(DecorationBehaviour behaviour) const
|
||||||
|
|
||||||
int RedmondDeco::layoutMetric(LayoutMetric lm, bool respectWindowState, const KCommonDecorationButton *btn) const
|
int RedmondDeco::layoutMetric(LayoutMetric lm, bool respectWindowState, const KCommonDecorationButton *btn) const
|
||||||
{
|
{
|
||||||
|
bool border = !(maximizeMode()==MaximizeFull && !options()->moveResizeMaximizedWindows());
|
||||||
|
|
||||||
switch (lm) {
|
switch (lm) {
|
||||||
case LM_BorderLeft:
|
case LM_BorderLeft:
|
||||||
case LM_BorderRight:
|
case LM_BorderRight:
|
||||||
case LM_BorderBottom:
|
case LM_BorderBottom:
|
||||||
return borderWidth;
|
return border ? borderWidth : 0;
|
||||||
|
|
||||||
case LM_TitleEdgeLeft:
|
case LM_TitleEdgeLeft:
|
||||||
case LM_TitleEdgeRight:
|
case LM_TitleEdgeRight:
|
||||||
return borderWidth+2;
|
return border ? borderWidth+2 : 2;
|
||||||
|
|
||||||
case LM_TitleEdgeTop:
|
case LM_TitleEdgeTop:
|
||||||
return borderWidth+2;
|
return border ? borderWidth+2 : 2;
|
||||||
|
|
||||||
case LM_TitleEdgeBottom:
|
case LM_TitleEdgeBottom:
|
||||||
return 1;
|
return border ? 1 : 0;
|
||||||
|
|
||||||
case LM_TitleBorderLeft:
|
case LM_TitleBorderLeft:
|
||||||
case LM_TitleBorderRight:
|
case LM_TitleBorderRight:
|
||||||
return 1;
|
return border ? 1 : 0;
|
||||||
|
|
||||||
case LM_TitleHeight:
|
case LM_TitleHeight:
|
||||||
return titleHeight-2;
|
return titleHeight-2;
|
||||||
|
@ -466,6 +468,10 @@ void RedmondDeco::paintEvent( QPaintEvent* )
|
||||||
bool hicolor = QPixmap::defaultDepth() > 8;
|
bool hicolor = QPixmap::defaultDepth() > 8;
|
||||||
int fontoffset = 1;
|
int fontoffset = 1;
|
||||||
|
|
||||||
|
// Modify borderWith used by titlebar to 0, when maximized and not move or resize able
|
||||||
|
bool border = !(maximizeMode()==MaximizeFull && !options()->moveResizeMaximizedWindows());
|
||||||
|
int modBorderWidth = border ? borderWidth : 0;
|
||||||
|
|
||||||
QPainter p(widget());
|
QPainter p(widget());
|
||||||
|
|
||||||
// Obtain widget bounds.
|
// Obtain widget bounds.
|
||||||
|
@ -533,7 +539,7 @@ void RedmondDeco::paintEvent( QPaintEvent* )
|
||||||
|
|
||||||
// Create a disposable pixmap buffer for the title blend
|
// Create a disposable pixmap buffer for the title blend
|
||||||
KPixmap* titleBuffer = new KPixmap;
|
KPixmap* titleBuffer = new KPixmap;
|
||||||
titleBuffer->resize(w-2*borderWidth, titleHeight);
|
titleBuffer->resize(w-2*modBorderWidth, titleHeight);
|
||||||
|
|
||||||
if (titleBuffer->depth() > 16) {
|
if (titleBuffer->depth() > 16) {
|
||||||
KPixmapEffect::gradient(*titleBuffer, c1, c2,
|
KPixmapEffect::gradient(*titleBuffer, c1, c2,
|
||||||
|
@ -558,14 +564,14 @@ void RedmondDeco::paintEvent( QPaintEvent* )
|
||||||
AlignLeft | AlignVCenter, caption() );
|
AlignLeft | AlignVCenter, caption() );
|
||||||
p2.end();
|
p2.end();
|
||||||
|
|
||||||
p.drawPixmap( borderWidth, borderWidth, *titleBuffer );
|
p.drawPixmap( modBorderWidth, modBorderWidth, *titleBuffer );
|
||||||
|
|
||||||
delete titleBuffer;
|
delete titleBuffer;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Assume lower ended hardware, so don't use buffers.
|
// Assume lower ended hardware, so don't use buffers.
|
||||||
// Don't draw a gradient either.
|
// Don't draw a gradient either.
|
||||||
p.fillRect( borderWidth, borderWidth, w-2*borderWidth, titleHeight, c1 );
|
p.fillRect( modBorderWidth, modBorderWidth, w-2*modBorderWidth, titleHeight, c1 );
|
||||||
|
|
||||||
// Draw the title text.
|
// Draw the title text.
|
||||||
p.setFont( fnt );
|
p.setFont( fnt );
|
||||||
|
|
Loading…
Reference in a new issue