kdecore Library API Documentation

netwm_def.h

00001 /*
00002 
00003   Copyright (c) 2000 Troll Tech AS
00004   Copyright (c) 2003 Lubos Lunak <l.lunak@kde.org>
00005 
00006   Permission is hereby granted, free of charge, to any person obtaining a
00007   copy of this software and associated documentation files (the "Software"),
00008   to deal in the Software without restriction, including without limitation
00009   the rights to use, copy, modify, merge, publish, distribute, sublicense,
00010   and/or sell copies of the Software, and to permit persons to whom the
00011   Software is furnished to do so, subject to the following conditions:
00012 
00013   The above copyright notice and this permission notice shall be included in
00014   all copies or substantial portions of the Software.
00015 
00016   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00017   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00018   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
00019   THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00020   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
00021   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
00022   DEALINGS IN THE SOFTWARE.
00023 
00024 */
00025 
00026 #ifndef   __netwm_def_h
00027 #define   __netwm_def_h
00028 
00029 #include <kdelibs_export.h>
00030 
00044 struct NETPoint {
00048     NETPoint() : x(0), y(0) { }
00049 
00050     /*
00051        Public data member.
00052     **/
00053     int x, 
00054       y;   
00055 };
00056 
00057 
00071 struct NETSize {
00075     NETSize() : width(0), height(0) { }
00076 
00077     /*
00078        Public data member.
00079     **/
00080     int width,  
00081       height;   
00082 };
00083 
00094 struct NETRect {
00100     NETPoint pos;
00101 
00107     NETSize size;
00108 };
00109 
00110 
00122 struct NETIcon {
00126     NETIcon() : data(0) { }
00127 
00133     NETSize size;
00134 
00140     unsigned char *data;
00141 };
00142 
00143 
00153 struct NETExtendedStrut {
00157     NETExtendedStrut() : left_width(0), left_start(0), left_end(0),
00158         right_width(0), right_start(0), right_end(0), top_width(0), top_start(0), top_end(0),
00159         bottom_width(0), bottom_start(0), bottom_end(0) {}
00160 
00164     int left_width, left_start, left_end;
00165 
00169     int right_width, right_start, right_end;
00170 
00174     int top_width, top_start, top_end;
00175 
00179     int bottom_width, bottom_start, bottom_end;
00180     
00181 };
00182 
00183 
00195 struct NETStrut {
00199     NETStrut() : left(0), right(0), top(0), bottom(0) { }
00200 
00204     int left;
00205 
00209     int right;
00210 
00214     int top;
00215 
00219     int bottom;
00220 };
00221 
00222 
00235 class KDECORE_EXPORT NET {
00236 public:
00247     enum Role {
00248     Client,
00249     WindowManager
00250     };
00251 
00282     enum WindowType {
00283     Unknown  = -1,
00284     Normal   = 0,
00285     Desktop  = 1,
00286     Dock     = 2,
00287     Toolbar  = 3,
00288         Menu     = 4,
00289     Dialog   = 5,
00290     Override = 6, // NON STANDARD
00291         TopMenu  = 7, // NON STANDARD
00292     Tool     = Toolbar, // This will go away soon, COMPAT (How soon? :)
00293     Utility  = 8,   
00294     Splash   = 9    
00295     };
00296     
00302     enum WindowTypeMask {
00303     NormalMask   = 1<<0,
00304     DesktopMask  = 1<<1,
00305     DockMask     = 1<<2,
00306     ToolbarMask  = 1<<3,
00307     MenuMask     = 1<<4,
00308     DialogMask   = 1<<5,
00309     OverrideMask = 1<<6,
00310         TopMenuMask  = 1<<7,
00311     UtilityMask  = 1<<8,
00312     SplashMask   = 1<<9
00313     };
00314 
00315     // KDE4 move to WindowTypeMask
00316     enum { AllTypesMask = 0LU-1 };
00317 
00322     static bool typeMatchesMask( WindowType type, unsigned long mask );
00323 
00365     enum State {
00366     Modal        = 1<<0,
00367     Sticky       = 1<<1,
00368     MaxVert      = 1<<2,
00369     MaxHoriz     = 1<<3,
00370     Max = MaxVert | MaxHoriz,
00371     Shaded       = 1<<4,
00372     SkipTaskbar  = 1<<5,
00373     KeepAbove    = 1<<6,    
00374     StaysOnTop   = KeepAbove,   // NOT STANDARD
00375     SkipPager    = 1<<7,
00376     Hidden       = 1<<8,    
00377     FullScreen   = 1<<9,    
00378     KeepBelow    = 1<<10,   
00379         DemandsAttention = 1<<11  
00380     };
00381 
00401     enum Direction {
00402     TopLeft      = 0,
00403     Top          = 1,
00404     TopRight     = 2,
00405     Right        = 3,
00406     BottomRight  = 4,
00407     Bottom       = 5,
00408     BottomLeft   = 6,
00409     Left         = 7,
00410     Move         = 8,  // movement only
00414     KeyboardSize = 9,  // size via keyboard
00418     KeyboardMove = 10  // move via keyboard
00419     };
00420 
00435     // KDE4 aaarghl, this doesn't map correctly to Xlib #defines
00436     enum MappingState {
00437     Visible, // ie. NormalState
00438     Withdrawn,
00439     Iconic
00440     };
00441 
00446     enum Action {
00447         ActionMove           = 1<<0,
00448         ActionResize         = 1<<1,
00449         ActionMinimize       = 1<<2,
00450         ActionShade          = 1<<3,
00451         ActionStick          = 1<<4,
00452         ActionMaxVert        = 1<<5,
00453         ActionMaxHoriz       = 1<<6,
00454         ActionMax            = ActionMaxVert | ActionMaxHoriz,
00455         ActionFullScreen     = 1<<7,
00456         ActionChangeDesktop  = 1<<8,
00457         ActionClose          = 1<<9
00458     };
00459     
00506     enum Property {
00507     // root
00508     Supported             = 1<<0,
00509     ClientList            = 1<<1,
00510     ClientListStacking    = 1<<2,
00511     NumberOfDesktops      = 1<<3,
00512     DesktopGeometry       = 1<<4,
00513     DesktopViewport       = 1<<5,
00514     CurrentDesktop        = 1<<6,
00515     DesktopNames          = 1<<7,
00516     ActiveWindow          = 1<<8,
00517     WorkArea              = 1<<9,
00518     SupportingWMCheck     = 1<<10,
00519     VirtualRoots          = 1<<11,
00520     KDESystemTrayWindows  = 1<<12, // NOT STANDARD
00521     CloseWindow           = 1<<13,
00522     WMMoveResize          = 1<<14,
00523 
00524     // window
00525     WMName                = 1<<15,
00526     WMVisibleName         = 1<<16,
00527     WMDesktop             = 1<<17,
00528     WMWindowType          = 1<<18,
00529     WMState               = 1<<19,
00530     WMStrut               = 1<<20,
00531     WMIconGeometry        = 1<<21,
00532     WMIcon                = 1<<22,
00533     WMPid                 = 1<<23,
00534     WMHandledIcons        = 1<<24,
00535     WMPing                = 1<<25,
00536     WMKDESystemTrayWinFor = 1<<26, // NOT STANDARD
00537     XAWMState             = 1<<27, // NOT STANDARD
00538     WMKDEFrameStrut       = 1<<28, // NOT STANDARD
00539 
00540     // Need to be reordered
00541     WMIconName            = 1<<29,
00542     WMVisibleIconName     = 1<<30,
00543     WMGeometry        = 1<<31
00544     };
00545     
00568     enum Property2 {
00569         WM2UserTime            = 1<<0,
00570         WM2StartupId           = 1<<1,
00571         WM2TransientFor        = 1<<2,
00572         WM2GroupLeader         = 1<<3,
00573         WM2AllowedActions      = 1<<4,
00574         WM2RestackWindow       = 1<<5,
00575         WM2MoveResizeWindow    = 1<<6,
00576         WM2ExtendedStrut       = 1<<7,
00577         WM2TakeActivity        = 1<<8,
00578         WM2KDETemporaryRules   = 1<<9,  // NOT STANDARD
00579         WM2WindowClass         = 1<<10, 
00580         WM2WindowRole          = 1<<11, 
00581         WM2ClientMachine       = 1<<12  
00582     };
00583 
00589     enum { OnAllDesktops = -1 };
00590     
00597     // must match the values for data.l[0] field in _NET_ACTIVE_WINDOW message
00598     enum RequestSource {
00599         FromUnknown, // internal
00600         FromApplication,
00601         FromTool
00602     };
00603 };
00604 
00605 
00606 #endif // __netwm_def_h
KDE Logo
This file is part of the documentation for kdecore Library Version 3.4.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Sep 16 06:46:38 2005 by doxygen 1.4.4 written by Dimitri van Heesch, © 1997-2003