00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#ifndef KWIN_CLIENT_H
00013
#define KWIN_CLIENT_H
00014
00015
#include "utils.h"
00016
#include "options.h"
00017
#include "workspace.h"
00018
#include "kdecoration.h"
00019
#include <qframe.h>
00020
#include <qvbox.h>
00021
#include <qpixmap.h>
00022
#include <netwm.h>
00023
#include <kdebug.h>
00024
#include <assert.h>
00025
#include <X11/X.h>
00026
#include <X11/Xlib.h>
00027
#include <X11/Xutil.h>
00028
#include <fixx11h.h>
00029
00030
class QTimer;
00031
class KProcess;
00032
class KStartupInfoData;
00033
00034
namespace KWinInternal
00035 {
00036
00037
class Workspace;
00038
class Client;
00039
class WinInfo;
00040
class SessionInfo;
00041
class Bridge;
00042
00043 class Client :
public QObject,
public KDecorationDefines
00044 {
00045 Q_OBJECT
00046
public:
00047
Client( Workspace *ws );
00048 Window window()
const;
00049 Window frameId()
const;
00050 Window wrapperId()
const;
00051 Window decorationId()
const;
00052
00053 Workspace* workspace()
const;
00054
const Client* transientFor()
const;
00055
Client* transientFor();
00056
bool isTransient()
const;
00057
bool groupTransient()
const;
00058
bool wasOriginallyGroupTransient()
const;
00059 ClientList mainClients()
const;
00060
bool hasTransient(
const Client* c,
bool indirect )
const;
00061
const ClientList& transients()
const;
00062
void checkTransient( Window w );
00063
Client* findModal();
00064
const Group* group()
const;
00065 Group* group();
00066
void checkGroup( Group* gr = NULL,
bool force =
false );
00067
00068 NET::WindowType windowType(
bool strict =
false,
int supported_types = SUPPORTED_WINDOW_TYPES_MASK )
const;
00069
00070 QRect geometry()
const;
00071 QSize size()
const;
00072 QSize minSize()
const;
00073 QPoint pos()
const;
00074 QRect rect()
const;
00075
int x()
const;
00076
int y()
const;
00077
int width()
const;
00078
int height()
const;
00079 QPoint clientPos()
const;
00080 QSize clientSize()
const;
00081
00082
bool windowEvent( XEvent* e );
00083
virtual bool eventFilter( QObject* o, QEvent* e );
00084
00085
bool manage( Window w,
bool isMapped );
00086
00087
void releaseWindow(
bool on_shutdown =
false );
00088
00089
enum Sizemode
00090 {
00091 SizemodeAny,
00092 SizemodeFixedW,
00093 SizemodeFixedH,
00094 SizemodeMax,
00095 SizemodeShaded
00096 };
00097 QSize
adjustedSize(
const QSize&, Sizemode mode = SizemodeAny )
const;
00098
00099 QPixmap icon()
const;
00100 QPixmap miniIcon()
const;
00101
00102
bool isActive()
const;
00103
void setActive(
bool );
00104
00105
int desktop()
const;
00106
void setDesktop(
int );
00107
bool isOnDesktop(
int d )
const;
00108
bool isOnCurrentDesktop()
const;
00109
bool isOnAllDesktops()
const;
00110
void setOnAllDesktops(
bool set );
00111
00112
00113
bool isShown(
bool shaded_is_shown )
const;
00114
00115
enum ShadeMode
00116 {
00117 ShadeNone,
00118 ShadeNormal,
00119 ShadeHover,
00120 ShadeActivated
00121 };
00122
bool isShade()
const;
00123 ShadeMode shadeMode()
const;
00124
void setShade( ShadeMode mode );
00125
bool isShadeable()
const;
00126
00127
bool isMinimized()
const;
00128
bool isMaximizable()
const;
00129 QRect geometryRestore()
const;
00130 MaximizeMode maximizeMode()
const;
00131
bool isMinimizable()
const;
00132
void setMaximize(
bool vertically,
bool horizontally );
00133
00134
void setFullScreen(
bool set,
bool user );
00135
bool isFullScreen()
const;
00136
bool isFullScreenable(
bool fullscreen_hack =
false )
const;
00137
bool userCanSetFullScreen()
const;
00138 QRect geometryFSRestore()
const {
return geom_fs_restore; }
00139
int fullScreenMode()
const {
return fullscreen_mode; }
00140
00141
bool isUserNoBorder()
const;
00142
void setUserNoBorder(
bool set );
00143
bool userCanSetNoBorder()
const;
00144
bool noBorder()
const;
00145
00146
bool skipTaskbar(
bool from_outside =
false )
const;
00147
void setSkipTaskbar(
bool set,
bool from_outside );
00148
00149
bool skipPager()
const;
00150
void setSkipPager(
bool );
00151
00152
bool keepAbove()
const;
00153
void setKeepAbove(
bool );
00154
bool keepBelow()
const;
00155
void setKeepBelow(
bool );
00156 Layer layer()
const;
00157 Layer belongsToLayer()
const;
00158
void invalidateLayer();
00159
00160
void setModal(
bool modal );
00161
bool isModal()
const;
00162
00163
bool storeSettings()
const;
00164
void setStoreSettings(
bool );
00165
00166
00167
bool wantsTabFocus()
const;
00168
bool wantsInput()
const;
00169
bool hasNETSupport()
const;
00170
bool isMovable()
const;
00171
bool isDesktop()
const;
00172
bool isDock()
const;
00173
bool isToolbar()
const;
00174
bool isTopMenu()
const;
00175
bool isMenu()
const;
00176
bool isNormalWindow()
const;
00177
bool isDialog()
const;
00178
bool isSplash()
const;
00179
bool isUtility()
const;
00180
bool isOverride()
const;
00181
00182
00183
00184
00185
bool isSpecialWindow()
const;
00186
00187
bool isResizable()
const;
00188
bool isCloseable()
const;
00189
00190
void takeFocus(
bool force, allowed_t );
00191
void demandAttention(
bool set =
true );
00192
00193
void setMask(
const QRegion& r,
int mode = X::Unsorted );
00194 QRegion mask()
const;
00195
00196
void updateDecoration(
bool check_workspace_pos,
bool force =
false );
00197
void checkBorderSizes();
00198
00199
00200
bool shape()
const;
00201
void updateShape();
00202
00203
void setGeometry(
int x,
int y,
int w,
int h, ForceGeometry_t force = NormalGeometrySet );
00204
void setGeometry(
const QRect& r, ForceGeometry_t force = NormalGeometrySet );
00205
void move(
int x,
int y, ForceGeometry_t force = NormalGeometrySet );
00206
void move(
const QPoint & p, ForceGeometry_t force = NormalGeometrySet );
00207
00208
void plainResize(
int w,
int h, ForceGeometry_t force = NormalGeometrySet );
00209
void plainResize(
const QSize& s, ForceGeometry_t force = NormalGeometrySet );
00210
void keepInArea(
const QRect& area );
00211
00212
void growHorizontal();
00213
void shrinkHorizontal();
00214
void growVertical();
00215
void shrinkVertical();
00216
00217
bool providesContextHelp()
const;
00218
00219
bool performMouseCommand( Options::MouseCommand, QPoint globalPos );
00220
00221 QCString windowRole()
const;
00222 QCString
sessionId();
00223 QCString resourceName()
const;
00224 QCString resourceClass()
const;
00225 QCString
wmCommand();
00226 QCString
wmClientMachine()
const;
00227 Window
wmClientLeader()
const;
00228 pid_t pid()
const;
00229
00230 QRect
adjustedClientArea(
const QRect& area )
const;
00231
00232 Colormap colormap()
const;
00233
00234
00235
void hideClient(
bool hide );
00236
00237
void virtualDesktopChange();
00238
00239 QString
caption()
const;
00240
00241
void keyPressEvent( uint key_code );
00242
00243 Window moveResizeGrabWindow()
const;
00244
00245
const QPoint calculateGravitation(
bool invert,
int gravity = 0 )
const;
00246
00247
void NETMoveResize(
int x_root,
int y_root, NET::Direction direction );
00248
void NETMoveResizeWindow(
int flags,
int x,
int y,
int width,
int height );
00249
void restackWindow( Window above,
int detail, NET::RequestSource source,
bool send_event =
false );
00250
00251
void gotPing( Time timestamp );
00252
00253
static QCString
staticWindowRole(WId);
00254
static QCString
staticSessionId(WId);
00255
static QCString
staticWmCommand(WId);
00256
static QCString
staticWmClientMachine(WId);
00257
static Window
staticWmClientLeader(WId);
00258
00259
void checkWorkspacePosition();
00260
void updateUserTime( Time time = CurrentTime );
00261 Time userTime()
const;
00262
bool hasUserTimeSupport()
const;
00263
bool ignoreFocusStealing()
const;
00264
00265
00266
static void deleteClient(
Client* c, allowed_t );
00267
00268
static bool resourceMatch(
const Client* c1,
const Client* c2 );
00269
static bool belongToSameApplication(
const Client* c1,
const Client* c2,
bool active_hack =
false );
00270
static void readIcons( Window win, QPixmap* icon, QPixmap* miniicon );
00271
00272
public slots:
00273
void minimize();
00274
void unminimize();
00275
void closeWindow();
00276
void killWindow();
00277
void maximize( MaximizeMode );
00278
void toggleOnAllDesktops();
00279
void toggleShade();
00280
void showContextHelp();
00281
void autoRaise();
00282
void cancelAutoRaise();
00283
void shadeHover();
00284
void destroyClient();
00285
00286
private:
00287
friend class Bridge;
00288
virtual void processMousePressEvent( QMouseEvent* e );
00289
00290
private:
00291
00292
virtual ~
Client();
00293
00294 Position mousePosition(
const QPoint& )
const;
00295
void setCursor( Position m );
00296
void setCursor(
const QCursor& c );
00297
00298
void animateMinimizeOrUnminimize(
bool minimize );
00299 QPixmap animationPixmap(
int w );
00300
00301
void drawbound(
const QRect& geom );
00302
void clearbound();
00303
void doDrawbound(
const QRect& geom,
bool clear );
00304
00305
00306
bool mapRequestEvent( XMapRequestEvent* e );
00307
void unmapNotifyEvent( XUnmapEvent*e );
00308
void destroyNotifyEvent( XDestroyWindowEvent*e );
00309
void configureRequestEvent( XConfigureRequestEvent* e );
00310
void propertyNotifyEvent( XPropertyEvent* e );
00311
void clientMessageEvent( XClientMessageEvent* e );
00312
void enterNotifyEvent( XCrossingEvent* e );
00313
void leaveNotifyEvent( XCrossingEvent* e );
00314
void visibilityNotifyEvent( XVisibilityEvent* e );
00315
void focusInEvent( XFocusInEvent* e );
00316
void focusOutEvent( XFocusOutEvent* e );
00317
00318
bool buttonPressEvent( Window w,
int button,
int state,
int x,
int y,
int x_root,
int y_root );
00319
bool buttonReleaseEvent( Window w,
int button,
int state,
int x,
int y,
int x_root,
int y_root );
00320
bool motionNotifyEvent( Window w,
int state,
int x,
int y,
int x_root,
int y_root );
00321
00322
void processDecorationButtonPress(
int button,
int state,
int x,
int y,
int x_root,
int y_root );
00323
00324
private slots:
00325
void pingTimeout();
00326
void processKillerExited();
00327
00328
private:
00329
00330
void setMappingState(
int s );
00331
int mappingState()
const;
00332
bool isIconicState()
const;
00333
bool isNormalState()
const;
00334
bool isManaged()
const;
00335
void updateAllowedActions(
bool force =
false );
00336 QSize sizeForClientSize(
const QSize&, Sizemode mode = SizemodeAny )
const;
00337
void changeMaximize(
bool horizontal,
bool vertical,
bool adjust );
00338
void getWmNormalHints();
00339
void getIcons();
00340
void getWmClientLeader();
00341
void fetchName();
00342
void fetchIconicName();
00343
bool hasTransientInternal(
const Client* c,
bool indirect, ConstClientList& set )
const;
00344
00345
void updateWorkareaDiffs();
00346
void checkDirection(
int new_diff,
int old_diff, QRect& rect,
const QRect& area );
00347
static int computeWorkareaDiff(
int left,
int right,
int a_left,
int a_right );
00348
void configureRequest(
int value_mask,
int rx,
int ry,
int rw,
int rh,
int gravity = 0 );
00349
00350
void resizeWithChecks(
int w,
int h, ForceGeometry_t force = NormalGeometrySet );
00351
void resizeWithChecks(
const QSize& s, ForceGeometry_t force = NormalGeometrySet );
00352
00353
bool startMoveResize();
00354
void finishMoveResize(
bool cancel );
00355
void leaveMoveResize();
00356
void checkUnrestrictedMoveResize();
00357
void handleMoveResize(
int x,
int y,
int x_root,
int y_root );
00358
void positionGeometryTip();
00359
void updateMouseGrab();
00360
void grabButton(
int mod );
00361
void ungrabButton(
int mod );
00362
void resetMaximize();
00363
void resizeDecoration(
const QSize& s );
00364
00365
void pingWindow();
00366
void killProcess(
bool ask, Time timestamp = CurrentTime );
00367
void updateUrgency();
00368
00369
void embedClient( Window w,
const XWindowAttributes &attr );
00370
void detectNoBorder();
00371
void destroyDecoration();
00372
void updateFrameStrut();
00373
00374
void rawShow();
00375
void rawHide();
00376
00377 Time readUserTimeMapTimestamp(
const KStartupInfoData* asn_data,
00378
const SessionInfo* session )
const;
00379 Time readUserCreationTime()
const;
00380
static bool sameAppWindowRoleMatch(
const Client* c1,
const Client* c2,
bool active_hack );
00381
void startupIdChanged();
00382
00383 Window client;
00384 Window wrapper;
00385 Window frame;
00386
KDecoration* decoration;
00387 Workspace* wspace;
00388 Bridge* bridge;
00389
int desk;
00390
bool buttonDown;
00391
bool moveResizeMode;
00392
bool move_faked_activity;
00393 Window move_resize_grab_window;
00394
bool unrestrictedMoveResize;
00395
bool isMove()
const
00396
{
00397
return moveResizeMode && mode == PositionCenter;
00398 }
00399
bool isResize()
const
00400
{
00401
return moveResizeMode && mode != PositionCenter;
00402 }
00403
00404 Position mode;
00405 QPoint moveOffset;
00406 QPoint invertedMoveOffset;
00407 QRect moveResizeGeom;
00408 QRect initialMoveResizeGeom;
00409 XSizeHints xSizeHint;
00410
void sendSyntheticConfigureNotify();
00411
int mapping_state;
00412
void readTransient();
00413 Window verifyTransientFor( Window transient_for,
bool set );
00414
void addTransient(
Client* cl );
00415
void removeTransient(
Client* cl );
00416
void removeFromMainClients();
00417
void cleanGrouping();
00418
void checkGroupTransients();
00419
void setTransient( Window new_transient_for_id );
00420
Client* transient_for;
00421 Window transient_for_id;
00422 Window original_transient_for_id;
00423 ClientList transients_list;
00424 ShadeMode shade_mode;
00425 uint active :1;
00426 uint keep_above : 1;
00427 uint is_shape :1;
00428 uint skip_taskbar :1;
00429 uint original_skip_taskbar :1;
00430 uint Pdeletewindow :1;
00431 uint Ptakefocus :1;
00432 uint Pcontexthelp : 1;
00433 uint Pping : 1;
00434 uint input :1;
00435 uint store_settings : 1;
00436 uint skip_pager : 1;
00437 uint motif_may_resize : 1;
00438 uint motif_may_move :1;
00439 uint motif_may_close : 1;
00440 uint keep_below : 1;
00441 uint minimized : 1;
00442 uint hidden : 1;
00443 uint modal : 1;
00444 uint noborder : 1;
00445 uint user_noborder : 1;
00446 uint not_obscured : 1;
00447 uint urgency : 1;
00448 uint ignore_focus_stealing : 1;
00449 uint check_active_modal : 1;
00450
void getWMHints();
00451
void readIcons();
00452
void getWindowProtocols();
00453 QPixmap icon_pix;
00454 QPixmap miniicon_pix;
00455 QCursor cursor;
00456
00457
00458
enum FullScreenMode { FullScreenNone, FullScreenNormal, FullScreenHack };
00459 FullScreenMode fullscreen_mode;
00460 MaximizeMode max_mode;
00461 QRect geom_restore;
00462 QRect geom_fs_restore;
00463
int workarea_diff_x, workarea_diff_y;
00464 WinInfo* info;
00465 QTimer* autoRaiseTimer;
00466 QTimer* shadeHoverTimer;
00467 Colormap cmap;
00468 QCString resource_name;
00469 QCString resource_class;
00470 QString cap_normal, cap_iconic, cap_suffix;
00471 WId wmClientLeaderWin;
00472 QCString window_role;
00473 Group* in_group;
00474 Window window_group;
00475 Layer in_layer;
00476 QTimer* ping_timer;
00477 KProcess* process_killer;
00478 Time ping_timestamp;
00479 Time user_time;
00480
unsigned long allowed_actions;
00481 QRect frame_geometry;
00482 QSize client_size;
00483
int block_geometry;
00484
bool shade_geometry_change;
00485
int border_left, border_right, border_top, border_bottom;
00486 QRegion _mask;
00487
friend struct FetchNameInternalPredicate;
00488
friend struct CheckIgnoreFocusStealingProcedure;
00489
void show() { assert(
false ); }
00490
void hide() { assert(
false ); }
00491 };
00492
00493
00494
class WinInfo :
public NETWinInfo
00495 {
00496
private:
00497
typedef KWinInternal::Client Client;
00498
public:
00499 WinInfo(
Client* c, Display * display, Window window,
00500 Window rwin,
const unsigned long pr[],
int pr_size );
00501
virtual void changeDesktop(
int desktop);
00502
virtual void changeState(
unsigned long state,
unsigned long mask );
00503
private:
00504
Client * m_client;
00505 };
00506
00507
inline Window Client::window()
const
00508
{
00509
return client;
00510 }
00511
00512
inline Window Client::frameId()
const
00513
{
00514
return frame;
00515 }
00516
00517
inline Window Client::wrapperId()
const
00518
{
00519
return wrapper;
00520 }
00521
00522
inline Window Client::decorationId()
const
00523
{
00524
return decoration != NULL ? decoration->
widget()->winId() : None;
00525 }
00526
00527
inline Workspace* Client::workspace()
const
00528
{
00529
return wspace;
00530 }
00531
00532
inline const Client* Client::transientFor()
const
00533
{
00534
return transient_for;
00535 }
00536
00537
inline Client* Client::transientFor()
00538 {
00539
return transient_for;
00540 }
00541
00542
inline bool Client::groupTransient()
const
00543
{
00544
return transient_for_id == workspace()->rootWin();
00545 }
00546
00547
00548
00549
inline bool Client::wasOriginallyGroupTransient()
const
00550
{
00551
return original_transient_for_id == workspace()->rootWin();
00552 }
00553
00554
inline bool Client::isTransient()
const
00555
{
00556
return transient_for_id != None;
00557 }
00558
00559
inline const ClientList& Client::transients()
const
00560
{
00561
return transients_list;
00562 }
00563
00564
inline const Group* Client::group()
const
00565
{
00566
return in_group;
00567 }
00568
00569
inline Group* Client::group()
00570 {
00571
return in_group;
00572 }
00573
00574
inline int Client::mappingState()
const
00575
{
00576
return mapping_state;
00577 }
00578
00579
inline QCString Client::resourceName()
const
00580
{
00581
return resource_name;
00582 }
00583
00584
inline QCString Client::resourceClass()
const
00585
{
00586
return resource_class;
00587 }
00588
00589
inline
00590
bool Client::isMinimized()
const
00591
{
00592
return minimized;
00593 }
00594
00595
inline bool Client::isActive()
const
00596
{
00597
return active;
00598 }
00599
00606 inline int Client::desktop()
const
00607
{
00608
return desk;
00609 }
00610
00611
inline bool Client::isOnAllDesktops()
const
00612
{
00613
return desk == NET::OnAllDesktops;
00614 }
00619 inline bool Client::isOnDesktop(
int d )
const
00620
{
00621
return desk == d || isOnAllDesktops();
00622 }
00623
00624
inline
00625
bool Client::isShown(
bool shaded_is_shown )
const
00626
{
00627
return !isMinimized() && ( !isShade() || shaded_is_shown ) && !hidden;
00628 }
00629
00630
inline
00631
bool Client::isShade()
const
00632
{
00633
return shade_mode == ShadeNormal;
00634 }
00635
00636
inline
00637 Client::ShadeMode Client::shadeMode()
const
00638
{
00639
return shade_mode;
00640 }
00641
00642
inline QPixmap Client::icon()
const
00643
{
00644
return icon_pix;
00645 }
00646
00647
inline QPixmap Client::miniIcon()
const
00648
{
00649
return miniicon_pix;
00650 }
00651
00652
inline QRect Client::geometryRestore()
const
00653
{
00654
return geom_restore;
00655 }
00656
00657
inline Client::MaximizeMode Client::maximizeMode()
const
00658
{
00659
return max_mode;
00660 }
00661
00662
inline bool Client::skipTaskbar(
bool from_outside )
const
00663
{
00664
return from_outside ? original_skip_taskbar : skip_taskbar;
00665 }
00666
00667
inline bool Client::skipPager()
const
00668
{
00669
return skip_pager;
00670 }
00671
00672
inline bool Client::keepAbove()
const
00673
{
00674
return keep_above;
00675 }
00676
00677
inline bool Client::keepBelow()
const
00678
{
00679
return keep_below;
00680 }
00681
00682
inline bool Client::storeSettings()
const
00683
{
00684
return store_settings;
00685 }
00686
00687
inline void Client::setStoreSettings(
bool b )
00688 {
00689 store_settings = b;
00690 }
00691
00692
00693
inline bool Client::shape()
const
00694
{
00695
return is_shape;
00696 }
00697
00698
00699
inline bool Client::isFullScreen()
const
00700
{
00701
return fullscreen_mode != FullScreenNone;
00702 }
00703
00704
inline bool Client::isModal()
const
00705
{
00706
return modal;
00707 }
00708
00709
inline bool Client::hasNETSupport()
const
00710
{
00711
return info->hasNETSupport();
00712 }
00713
00714
inline Colormap Client::colormap()
const
00715
{
00716
return cmap;
00717 }
00718
00719
inline pid_t Client::pid()
const
00720
{
00721
return info->pid();
00722 }
00723
00724
inline void Client::invalidateLayer()
00725 {
00726 in_layer = UnknownLayer;
00727 }
00728
00729
inline bool Client::isIconicState()
const
00730
{
00731
return mapping_state == IconicState;
00732 }
00733
00734
inline bool Client::isNormalState()
const
00735
{
00736
return mapping_state == NormalState;
00737 }
00738
00739
inline bool Client::isManaged()
const
00740
{
00741
return mapping_state != WithdrawnState;
00742 }
00743
00744
inline QCString Client::windowRole()
const
00745
{
00746
return window_role;
00747 }
00748
00749
inline QRect Client::geometry()
const
00750
{
00751
return frame_geometry;
00752 }
00753
00754
inline QSize Client::size()
const
00755
{
00756
return frame_geometry.size();
00757 }
00758
00759
inline QSize Client::minSize()
const
00760
{
00761
return QSize( xSizeHint.min_width, xSizeHint.min_height );
00762 }
00763
00764
inline QPoint Client::pos()
const
00765
{
00766
return frame_geometry.topLeft();
00767 }
00768
00769
inline int Client::x()
const
00770
{
00771
return frame_geometry.x();
00772 }
00773
00774
inline int Client::y()
const
00775
{
00776
return frame_geometry.y();
00777 }
00778
00779
inline int Client::width()
const
00780
{
00781
return frame_geometry.width();
00782 }
00783
00784
inline int Client::height()
const
00785
{
00786
return frame_geometry.height();
00787 }
00788
00789
inline QRect Client::rect()
const
00790
{
00791
return QRect( 0, 0, width(), height());
00792 }
00793
00794
inline QPoint Client::clientPos()
const
00795
{
00796
return QPoint( border_left, border_top );
00797 }
00798
00799
inline QSize Client::clientSize()
const
00800
{
00801
return client_size;
00802 }
00803
00804
inline void Client::setGeometry(
const QRect& r, ForceGeometry_t force )
00805 {
00806
setGeometry( r.x(), r.y(), r.width(), r.height(), force );
00807 }
00808
00809
inline void Client::move(
const QPoint & p, ForceGeometry_t force )
00810 {
00811
move( p.x(), p.y(), force );
00812 }
00813
00814
inline void Client::plainResize(
const QSize& s, ForceGeometry_t force )
00815 {
00816 plainResize( s.width(), s.height(), force );
00817 }
00818
00819
inline void Client::resizeWithChecks(
const QSize& s, ForceGeometry_t force )
00820 {
00821 resizeWithChecks( s.width(), s.height(), force );
00822 }
00823
00824
inline bool Client::hasUserTimeSupport()
const
00825
{
00826
return info->userTime() != -1U;
00827 }
00828
00829
inline bool Client::ignoreFocusStealing()
const
00830
{
00831
return ignore_focus_stealing;
00832 }
00833
00834 KWIN_PROCEDURE( CheckIgnoreFocusStealingProcedure, cl->ignore_focus_stealing = options->checkIgnoreFocusStealing( cl ));
00835
00836
inline Window Client::moveResizeGrabWindow()
const
00837
{
00838
return move_resize_grab_window;
00839 }
00840
00841
#ifdef NDEBUG
00842
kndbgstream& operator<<( kndbgstream& stream,
const Client* );
00843 kndbgstream& operator<<( kndbgstream& stream,
const ClientList& );
00844 kndbgstream& operator<<( kndbgstream& stream,
const ConstClientList& );
00845
#else
00846
kdbgstream& operator<<( kdbgstream& stream,
const Client* );
00847 kdbgstream& operator<<( kdbgstream& stream,
const ClientList& );
00848 kdbgstream& operator<<( kdbgstream& stream,
const ConstClientList& );
00849
#endif
00850
00851 KWIN_COMPARE_PREDICATE( WindowMatchPredicate, Window, cl->window() == value );
00852 KWIN_COMPARE_PREDICATE( FrameIdMatchPredicate, Window, cl->frameId() == value );
00853 KWIN_COMPARE_PREDICATE( WrapperIdMatchPredicate, Window, cl->wrapperId() == value );
00854
00855 }
00856
00857
#endif