kwin.h

00001 /* This file is part of the KDE libraries
00002     Copyright (C) 1999 Matthias Ettrich (ettrich@kde.org)
00003 
00004     This library is free software; you can redistribute it and/or
00005     modify it under the terms of the GNU Library General Public
00006     License as published by the Free Software Foundation; either
00007     version 2 of the License, or (at your option) any later version.
00008 
00009     This library is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012     Library General Public License for more details.
00013 
00014     You should have received a copy of the GNU Library General Public License
00015     along with this library; see the file COPYING.LIB.  If not, write to
00016     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017     Boston, MA 02110-1301, USA.
00018 */
00019 #ifndef KWIN_H
00020 #define KWIN_H
00021 
00022 #include <sys/types.h>
00023 #include <qwindowdefs.h>
00024 #include <qstring.h>
00025 #include <qpixmap.h>
00026 #include "kdelibs_export.h"
00027 
00028 #ifdef Q_OS_UNIX
00029 
00030 #include <netwm_def.h>
00031 class NETWinInfo;
00032 
00061 class KDECORE_EXPORT KWin
00062 {
00063 public:
00064 
00092     static void activateWindow( WId win, long time = 0 );
00093 
00108     static void forceActiveWindow( WId win, long time = 0 );
00113     static void setActiveWindow( WId win ) KDE_DEPRECATED;
00114 
00126     static void demandAttention( WId win, bool set = true );
00127 
00138     static void setUserTime( WId win, long time );
00139 
00143     static void invokeContextHelp();
00144 
00145 
00159     static void setMainWindow( QWidget* subwindow, WId mainwindow );
00160 
00170     static void setSystemTrayWindowFor( WId trayWin, WId forWin );
00171 
00172     class WindowInfo;
00173     class WindowInfoPrivate;
00186     static WindowInfo windowInfo( WId win, unsigned long properties = 0, unsigned long properties2 = 0 );
00187 
00195     static WId transientFor( WId window );
00196 
00202     static WId groupLeader( WId window );
00203 
00220     static QPixmap icon( WId win, int width = -1, int height = -1, bool scale = false );
00221 
00230     enum IconSource { NETWM = 1, 
00231               WMHints = 2, 
00232               ClassHint = 4, 
00233               XApp = 8 
00234     };
00250     static QPixmap icon( WId win, int width, int height, bool scale, int flags );
00251 
00258     static void  setIcons( WId win, const QPixmap& icon, const QPixmap& miniIcon );
00259 
00270     static void setType( WId win, NET::WindowType windowType );
00271 
00283     static void setState( WId win, unsigned long state );
00284 
00296     static void clearState( WId win, unsigned long  state );
00297     
00308     static void setOpacity( WId win, uint percent );
00309     
00320     static void setShadowSize( WId win, uint percent );
00321 
00330     static void setOnAllDesktops( WId win, bool b );
00331 
00338     static void setOnDesktop( WId win, int desktop);
00339 
00361     static void setExtendedStrut( WId win, int left_width, int left_start, int left_end,
00362         int right_width, int right_start, int right_end, int top_width, int top_start, int top_end,
00363         int bottom_width, int bottom_start, int bottom_end );
00364 
00375     static void setStrut( WId win, int left, int right, int top, int bottom );
00380     static int currentDesktop();
00381 
00387     static int numberOfDesktops();
00388 
00394     static void setCurrentDesktop( int desktop );
00395 
00404     static void iconifyWindow( WId win, bool animation = true  );
00405 
00414     static void deIconifyWindow( WId win, bool animation = true );
00415 
00423     static void raiseWindow( WId win );
00424 
00432     static void lowerWindow( WId win );
00433 
00439     static bool icccmCompliantMappingState();
00440 
00445     static bool allowedActionsSupported();
00446 
00452     static QString readNameProperty( WId window, unsigned long atom );
00453 
00457     struct KDECORE_EXPORT Info
00458     {
00460     WId win;
00462     long unsigned int state;
00464     bool isMinimized() const;
00465     bool isIconified() const;
00466     NET::MappingState mappingState;
00468     NETStrut strut;
00470     NET::WindowType windowType;
00472     QString visibleName;
00474     QString name;
00476     int desktop;
00478     bool onAllDesktops;
00480     pid_t pid;
00482     QRect geometry;
00484     QRect frameGeometry;
00485 
00486     QString visibleNameWithState() const;
00487     };
00488 
00493     static Info info( WId win ) KDE_DEPRECATED;
00494 
00495 #ifdef KDE_NO_COMPAT
00496 private:
00497 #endif
00498 
00502     static void appStarted() KDE_DEPRECATED;
00503 };
00504 
00505 
00510 class KDECORE_EXPORT KWin::WindowInfo
00511 {
00512 public:
00516     WindowInfo( WId window, unsigned long properties, unsigned long properties2 );
00517     WindowInfo(); // to make QValueList and others happy
00518     ~WindowInfo();
00525     bool valid( bool withdrawn_is_valid = false ) const;
00529     WId win() const;
00534     unsigned long state() const;
00540     bool hasState( unsigned long s ) const { return ( state() & s ) == s; }
00548     bool isMinimized() const;
00555     NET::MappingState mappingState() const;
00560     NETExtendedStrut extendedStrut() const;
00566     NETStrut strut() const;
00572     NET::WindowType windowType( int supported_types ) const;
00578     QString visibleName() const;
00588     QString visibleNameWithState() const;
00594     QString name() const;
00601     QString visibleIconName() const;
00612     QString visibleIconNameWithState() const;
00619     QString iconName() const;
00624     bool isOnCurrentDesktop() const;
00629     bool isOnDesktop( int desktop ) const;
00635     bool onAllDesktops() const;
00641     int desktop() const;
00646     QRect geometry() const;
00651     QRect frameGeometry() const;
00657     WId transientFor() const;
00662     WId groupLeader() const;
00663 
00670     QCString windowClassClass() const;
00671 
00678     QCString windowClassName() const;
00679 
00685     QCString windowRole() const;
00686 
00692     QCString clientMachine() const;
00693 
00699     bool actionSupported( NET::Action action ) const;
00700 
00701     WindowInfo( const WindowInfo& );
00702     WindowInfo& operator=( const WindowInfo& );
00703 private:
00704     WindowInfoPrivate* d;
00705 };
00706 
00707 #endif //Q_OS_UNIX
00708 
00709 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys