X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=util%2Fepist%2Fwindow.hh;h=df925ad69081d238e3157e41f454a1314f2c70b8;hb=5b91573e0c01a7ee6e504451c2ef3143709d06a2;hp=30ae529d6995d408dd1060c3b4a99e2cbe9b1f38;hpb=a0e50e15b507f1f8752bd7858c9e758265a34fc4;p=chaz%2Fopenbox diff --git a/util/epist/window.hh b/util/epist/window.hh index 30ae529d..df925ad6 100644 --- a/util/epist/window.hh +++ b/util/epist/window.hh @@ -30,22 +30,34 @@ extern "C" { #include #include +#include "../../src/Util.hh" + class epist; -class XWindow; +class screen; class XAtom; -typedef std::list WindowList; - class XWindow { +public: + enum Max { + Max_None, + Max_Horz, + Max_Vert, + Max_Full + }; + private: - epist *_epist; - XAtom *_xatom; + epist *_epist; + screen *_screen; + XAtom *_xatom; + Window _window; - + unsigned int _desktop; std::string _title; std::string _app_name; std::string _app_class; + Rect _rect; + int _gravity; // states bool _shaded; @@ -55,13 +67,17 @@ private: bool _unmapped; + void updateDimentions(); + void updateGravity(); void updateState(); void updateDesktop(); void updateTitle(); void updateClass(); + void findFramePosition(int &x, int &y) const; + public: - XWindow(epist *epist, Window window); + XWindow(epist *epist, screen *screen, Window window); virtual ~XWindow(); inline Window window() const { return _window; } @@ -69,17 +85,36 @@ public: inline unsigned int desktop() const { return _desktop; } inline const std::string &title() const { return _title; } inline const std::string &appName() const { return _app_name; } - inline const std::string &appClass() const { return _app_name; } + inline const std::string &appClass() const { return _app_class; } inline bool shaded() const { return _shaded; } inline bool iconic() const { return _iconic; } inline bool maxVert() const { return _max_vert; } inline bool maxHorz() const { return _max_horz; } + inline const Rect &area() const { return _rect; } + inline unsigned int x() const { return _rect.x(); } + inline unsigned int y() const { return _rect.y(); } + inline unsigned int width() const { return _rect.width(); } + inline unsigned int height() const { return _rect.height(); } void processEvent(const XEvent &e); + void shade(const bool sh) const; + void close() const; + void raise() const; + void lower() const; + void iconify() const; + void focus() const; + void sendTo(unsigned int dest) const; + void move(int x, int y) const; + void resize(unsigned int width, unsigned int height) const; + void toggleMaximize(Max max) const; // i hate toggle functions + void maximize(Max max) const; + bool operator == (const XWindow &w) const { return w._window == _window; } bool operator == (const Window &w) const { return w == _window; } }; +typedef std::list WindowList; + #endif // __window_hh