kdecoration.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "kdecoration.h"
00026
00027 #include <kdebug.h>
00028 #include <qapplication.h>
00029 #include <kglobal.h>
00030 #include <assert.h>
00031 #if defined Q_WS_X11 && ! defined K_WS_QTONLY
00032 #include <X11/Xlib.h>
00033 #include <fixx11h.h>
00034 #endif
00035
00036 #include "kdecoration_p.h"
00037 #include "kdecorationfactory.h"
00038
00039 KDecorationOptions* KDecoration::options_;
00040
00041 KDecoration::KDecoration( KDecorationBridge* bridge, KDecorationFactory* factory )
00042 : bridge_( bridge ),
00043 w_( NULL ),
00044 factory_( factory )
00045 {
00046 factory->addDecoration( this );
00047 }
00048
00049 KDecoration::~KDecoration()
00050 {
00051 factory()->removeDecoration( this );
00052 delete w_;
00053 }
00054
00055 const KDecorationOptions* KDecoration::options()
00056 {
00057 return options_;
00058 }
00059
00060 void KDecoration::createMainWidget( WFlags flags )
00061 {
00062
00063 setMainWidget( new QWidget( initialParentWidget(), "decoration widget", initialWFlags() | flags ));
00064 }
00065
00066 void KDecoration::setMainWidget( QWidget* w )
00067 {
00068 assert( w_ == NULL );
00069 w_ = w;
00070 w->setMouseTracking( true );
00071 widget()->resize( geometry().size());
00072 }
00073
00074 QWidget* KDecoration::initialParentWidget() const
00075 {
00076 return bridge_->initialParentWidget();
00077 }
00078
00079 Qt::WFlags KDecoration::initialWFlags() const
00080 {
00081 return bridge_->initialWFlags();
00082 }
00083
00084 bool KDecoration::isActive() const
00085 {
00086 return bridge_->isActive();
00087 }
00088
00089 bool KDecoration::isCloseable() const
00090 {
00091 return bridge_->isCloseable();
00092 }
00093
00094 bool KDecoration::isMaximizable() const
00095 {
00096 return bridge_->isMaximizable();
00097 }
00098
00099 KDecoration::MaximizeMode KDecoration::maximizeMode() const
00100 {
00101 return bridge_->maximizeMode();
00102 }
00103
00104 bool KDecoration::isMinimizable() const
00105 {
00106 return bridge_->isMinimizable();
00107 }
00108
00109 bool KDecoration::providesContextHelp() const
00110 {
00111 return bridge_->providesContextHelp();
00112 }
00113
00114 int KDecoration::desktop() const
00115 {
00116 return bridge_->desktop();
00117 }
00118
00119 bool KDecoration::isModal() const
00120 {
00121 return bridge_->isModal();
00122 }
00123
00124 bool KDecoration::isShadeable() const
00125 {
00126 return bridge_->isShadeable();
00127 }
00128
00129 bool KDecoration::isShade() const
00130 {
00131 return bridge_->isShade();
00132 }
00133
00134 bool KDecoration::isSetShade() const
00135 {
00136 return bridge_->isSetShade();
00137 }
00138
00139 bool KDecoration::keepAbove() const
00140 {
00141 return bridge_->keepAbove();
00142 }
00143
00144 bool KDecoration::keepBelow() const
00145 {
00146 return bridge_->keepBelow();
00147 }
00148
00149 bool KDecoration::isMovable() const
00150 {
00151 return bridge_->isMovable();
00152 }
00153
00154 bool KDecoration::isResizable() const
00155 {
00156 return bridge_->isResizable();
00157 }
00158
00159 NET::WindowType KDecoration::windowType( unsigned long supported_types ) const
00160 {
00161 return bridge_->windowType( supported_types );
00162 }
00163
00164 QIconSet KDecoration::icon() const
00165 {
00166 return bridge_->icon();
00167 }
00168
00169 QString KDecoration::caption() const
00170 {
00171 return bridge_->caption();
00172 }
00173
00174 void KDecoration::processMousePressEvent( QMouseEvent* e )
00175 {
00176 return bridge_->processMousePressEvent( e );
00177 }
00178
00179 void KDecoration::showWindowMenu( QPoint pos )
00180 {
00181 bridge_->showWindowMenu( pos );
00182 }
00183
00184 void KDecoration::performWindowOperation( WindowOperation op )
00185 {
00186 bridge_->performWindowOperation( op );
00187 }
00188
00189 void KDecoration::setMask( const QRegion& reg, int mode )
00190 {
00191 bridge_->setMask( reg, mode );
00192 }
00193
00194 void KDecoration::clearMask()
00195 {
00196 bridge_->setMask( QRegion(), 0 );
00197 }
00198
00199 bool KDecoration::isPreview() const
00200 {
00201 return bridge_->isPreview();
00202 }
00203
00204 QRect KDecoration::geometry() const
00205 {
00206 return bridge_->geometry();
00207 }
00208
00209 QRect KDecoration::iconGeometry() const
00210 {
00211 return bridge_->iconGeometry();
00212 }
00213
00214 QRegion KDecoration::unobscuredRegion( const QRegion& r ) const
00215 {
00216 return bridge_->unobscuredRegion( r );
00217 }
00218
00219 QWidget* KDecoration::workspaceWidget() const
00220 {
00221 return bridge_->workspaceWidget();
00222 }
00223
00224 void KDecoration::closeWindow()
00225 {
00226 bridge_->closeWindow();
00227 }
00228
00229 void KDecoration::maximize( MaximizeMode mode )
00230 {
00231 bridge_->maximize( mode );
00232 }
00233
00234 void KDecoration::minimize()
00235 {
00236 bridge_->minimize();
00237 }
00238
00239 void KDecoration::showContextHelp()
00240 {
00241 bridge_->showContextHelp();
00242 }
00243
00244 void KDecoration::setDesktop( int desktop )
00245 {
00246 bridge_->setDesktop( desktop );
00247 }
00248
00249 void KDecoration::toggleOnAllDesktops()
00250 {
00251 if( isOnAllDesktops())
00252 setDesktop( bridge_->currentDesktop());
00253 else
00254 setDesktop( NET::OnAllDesktops );
00255 }
00256
00257 void KDecoration::titlebarDblClickOperation()
00258 {
00259 bridge_->titlebarDblClickOperation();
00260 }
00261
00262 void KDecoration::setShade( bool set )
00263 {
00264 bridge_->setShade( set );
00265 }
00266
00267 void KDecoration::setKeepAbove( bool set )
00268 {
00269 bridge_->setKeepAbove( set );
00270 }
00271
00272 void KDecoration::setKeepBelow( bool set )
00273 {
00274 bridge_->setKeepBelow( set );
00275 }
00276
00277 bool KDecoration::drawbound( const QRect&, bool )
00278 {
00279 return false;
00280 }
00281
00282 bool KDecoration::animateMinimize( bool )
00283 {
00284 return false;
00285 }
00286
00287 bool KDecoration::windowDocked( Position )
00288 {
00289 return false;
00290 }
00291
00292 void KDecoration::helperShowHide( bool show )
00293 {
00294 bridge_->helperShowHide( show );
00295 }
00296
00297 void KDecoration::reset( unsigned long )
00298 {
00299 }
00300
00301 void KDecoration::grabXServer()
00302 {
00303 bridge_->grabXServer( true );
00304 }
00305
00306 void KDecoration::ungrabXServer()
00307 {
00308 bridge_->grabXServer( false );
00309 }
00310
00311 KDecoration::Position KDecoration::mousePosition( const QPoint& p ) const
00312 {
00313 const int range = 16;
00314 int bleft, bright, btop, bbottom;
00315 borders( bleft, bright, btop, bbottom );
00316 btop = KMIN( btop, 4 );
00317
00318 Position m = PositionCenter;
00319
00320 if ( ( p.x() > bleft && p.x() < widget()->width() - bright )
00321 && ( p.y() > btop && p.y() < widget()->height() - bbottom ) )
00322 return PositionCenter;
00323
00324 if ( p.y() <= KMAX( range, btop ) && p.x() <= KMAX( range, bleft ))
00325 m = PositionTopLeft;
00326 else if ( p.y() >= widget()->height()- KMAX( range, bbottom )
00327 && p.x() >= widget()->width()- KMAX( range, bright ))
00328 m = PositionBottomRight;
00329 else if ( p.y() >= widget()->height()- KMAX( range, bbottom ) && p.x() <= KMAX( range, bleft ))
00330 m = PositionBottomLeft;
00331 else if ( p.y() <= KMAX( range, btop ) && p.x() >= widget()->width()- KMAX( range, bright ))
00332 m = PositionTopRight;
00333 else if ( p.y() <= btop )
00334 m = PositionTop;
00335 else if ( p.y() >= widget()->height()-bbottom )
00336 m = PositionBottom;
00337 else if ( p.x() <= bleft )
00338 m = PositionLeft;
00339 else if ( p.x() >= widget()->width()-bright )
00340 m = PositionRight;
00341 else
00342 m = PositionCenter;
00343 return m;
00344 }
00345
00346 KDecorationOptions::KDecorationOptions()
00347 {
00348 assert( KDecoration::options_ == NULL );
00349 KDecoration::options_ = this;
00350 }
00351
00352 KDecorationOptions::~KDecorationOptions()
00353 {
00354 assert( KDecoration::options_ == this );
00355 KDecoration::options_ = NULL;
00356 }
00357
00358 const QColor& KDecorationOptions::color(ColorType type, bool active) const
00359 {
00360 return(d->colors[type + (active ? 0 : NUM_COLORS)]);
00361 }
00362
00363 const QFont& KDecorationOptions::font(bool active, bool small) const
00364 {
00365 if ( small )
00366 return(active ? d->activeFontSmall : d->inactiveFontSmall);
00367 else
00368 return(active ? d->activeFont : d->inactiveFont);
00369 }
00370
00371 const QColorGroup& KDecorationOptions::colorGroup(ColorType type, bool active) const
00372 {
00373 int idx = type + (active ? 0 : NUM_COLORS);
00374 if(d->cg[idx])
00375 return(*d->cg[idx]);
00376 d->cg[idx] = new QColorGroup(Qt::black, d->colors[idx], d->colors[idx].light(150),
00377 d->colors[idx].dark(), d->colors[idx].dark(120),
00378 Qt::black, QApplication::palette().active().
00379 base());
00380 return(*d->cg[idx]);
00381 }
00382
00383 bool KDecorationOptions::customButtonPositions() const
00384 {
00385 return d->custom_button_positions;
00386 }
00387
00388 QString KDecorationOptions::titleButtonsLeft() const
00389 {
00390 return d->title_buttons_left;
00391 }
00392
00393 QString KDecorationOptions::titleButtonsRight() const
00394 {
00395 return d->title_buttons_right;
00396 }
00397
00398 bool KDecorationOptions::showTooltips() const
00399 {
00400 return d->show_tooltips;
00401 }
00402
00403 KDecorationOptions::BorderSize KDecorationOptions::preferredBorderSize( KDecorationFactory* factory ) const
00404 {
00405 assert( factory != NULL );
00406 if( d->cached_border_size == BordersCount )
00407 d->cached_border_size = d->findPreferredBorderSize( d->border_size,
00408 factory->borderSizes());
00409 return d->cached_border_size;
00410 }
00411
00412 bool KDecorationOptions::moveResizeMaximizedWindows() const
00413 {
00414 return d->move_resize_maximized_windows;
00415 }
00416
00417 #include "kdecoration.moc"
This file is part of the documentation for kwin Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sun Apr 11 13:44:52 2004 by
doxygen 1.3.6-20040222 written by
Dimitri van Heesch, © 1997-2003