X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=util%2Fepist%2Fwindow.hh;h=d14ec06fca56e281642ca805f46492540e17e2e4;hb=217488ee3e1a7246bdfadb6a56f83a4a50a7c180;hp=c83f020c2f64fd712e0eae3376a2e1c2514b70bb;hpb=5112b6270431cf1fe288d63e15bfbe689c0624bf;p=chaz%2Fopenbox diff --git a/util/epist/window.hh b/util/epist/window.hh index c83f020c..d14ec06f 100644 --- a/util/epist/window.hh +++ b/util/epist/window.hh @@ -1,5 +1,5 @@ // -*- mode: C++; indent-tabs-mode: nil; -*- -// window.hh for Epistory - a key handler for NETWM/EWMH window managers. +// window.hh for Epistrophy - a key handler for NETWM/EWMH window managers. // Copyright (c) 2002 - 2002 Ben Jansens // // Permission is hereby granted, free of charge, to any person obtaining a @@ -30,52 +30,106 @@ extern "C" { #include #include -class XWindow; +#include "../../src/Util.hh" -typedef std::list WindowList; +class epist; +class screen; +class XAtom; class XWindow { +public: + enum Max { + Max_None, + Max_Horz, + Max_Vert, + Max_Full + }; + private: + // defined by black/openbox + static const unsigned long PropBlackboxAttributesElements = 9; + static const unsigned long AttribDecoration = 1 << 6; + static const unsigned long DecorNone = 0; + static const unsigned long DecorNormal = 2; + + 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 _inc_x, _inc_y; // resize increments + int _base_x, _base_y; // base size + int _gravity; + bool _can_focus; // states bool _shaded; bool _iconic; bool _max_vert; bool _max_horz; + bool _decorated; bool _unmapped; + void updateDimentions(); + void updateBlackboxAttributes(); + void updateNormalHints(); + void updateWMHints(); + void updateState(); + void updateDesktop(); + void updateTitle(); + void updateClass(); + public: - XWindow(Window window); + XWindow(epist *epist, screen *screen, Window window); virtual ~XWindow(); + inline screen *getScreen() const { return _screen; } inline Window window() const { return _window; } 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 canFocus() const { return _can_focus; } 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 bool decorated() const { return _decorated; } + 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(); } - inline void setUnmapped(bool u) { _unmapped = u; } + void processEvent(const XEvent &e); - void updateState(); - void updateDesktop(); - void updateTitle(); - void updateClass(); + void shade(const bool sh) const; + void close() const; + void raise() const; + void lower() const; + void iconify() const; + void focus(bool raise = true) const; + void decorate(bool d) const; + void sendTo(unsigned int dest) const; + void move(int x, int y) const; + void resizeRel(int dwidth, int dheight) const; + void resizeAbs(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