/* treewm - an X11 window manager.
 * Copyright (c) 2001-2002 Thomas Jäger <TheHunter2000 at web dot de>
 * This code is released under the terms of the GNU GPL.
 * See the included file LICENSE for details.
 */

#ifndef DESKTOP_H
#define DESKTOP_H

#include "global.h"
#include "client.h"


#define GOTO_RELATIVE 1
#define GOTO_MOVEFULL 2
#define GOTO_MOVEHALF 4
#define GOTO_SNAP     8

#define NI_UP    0
#define NI_DOWN  1
#define NI_LEFT  2
#define NI_RIGHT 3


#define ISDESKTOP(c) (dynamic_cast<Desktop *>(c))

class Desktop : public Client  {
  public:
    Desktop(Desktop *);
    virtual void SetClientInfo(ClientInfo *);
    virtual ~Desktop();
    virtual bool Init();
    virtual Desktop *DesktopAbove();
    virtual Client *FindPointerClient();
    virtual bool GetWindowList(MenuItem *,int &,bool,int,int,int,char *);
    virtual void RemoveClientReferences(Client *);
    void RemoveChild(Client *, int);
    virtual void SendWMDelete(int);
    virtual void SendEvent(XAnyEvent &e);
    virtual void Remove(int);
    void AutoClose();
    virtual void ReDraw();
    virtual void Raise(int);
    virtual void GrabButtons(bool=false);
    virtual void UpdateFlags(int,unsigned long);
    void UpdateTB();
    void ShowIcons(bool);
    Icon *AddIcon(Icon *);
    void NextIcon(Icon *, int);
    void RemoveIcon(Icon *);
    void GiveAway(Client *,bool);
    void Take(Client *,int,int);
    virtual void RequestDesktop(bool);
    virtual void GetFocus();
    bool Leave(int,int,bool);
    bool Goto(int,int,int);
    virtual Client *Focus();
    virtual unsigned long GetRegionMask(int,int,Client * &);
    void Tile();
    virtual void SetWMState();
    virtual void SendConfig();
    virtual void ChangeSize();
    void AutoResize();
    void Translate(int *,int *);
    Client *AddChild(Client *);
    Desktop *AddDesktop(Desktop *,Client *);
    unsigned long childflags;
    unsigned long childmask;
    Client *firstchild, *focus;
    Icon *firsticon;
    bool autoclose;
    Window StackRef[3];
    Client *LastRaised[3];
    int PosX,PosY;
    int VirtualX,VirtualY;
    RPixmap *bgpm;
	
};

#endif


syntax highlighted by Code2HTML, v. 0.9.1