]> Dogcows Code - chaz/openbox/blobdiff - util/epist/window.hh
handle all combinations of lock modifiers on keypress
[chaz/openbox] / util / epist / window.hh
index 636e90bae0691ef1951c47efccc719aa3f2df458..406efe09487c343c01c2bc35649b5a3a8772c4ea 100644 (file)
@@ -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 Epistophy - a key handler for NETWM/EWMH window managers.
 // Copyright (c) 2002 - 2002 Ben Jansens <ben at orodu.net>
 //
 // Permission is hereby granted, free of charge, to any person obtaining a
@@ -30,22 +30,36 @@ extern "C" {
 #include <list>
 #include <string>
 
+#include "../../src/Util.hh"
+
 class epist;
-class XWindow;
+class screen;
 class XAtom;
 
-typedef std::list<XWindow *> 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 _inc_x, _inc_y; // resize increments
+  int _base_x, _base_y; // base size
+  int _gravity;
 
   // states
   bool _shaded;
@@ -55,13 +69,17 @@ private:
 
   bool _unmapped;
 
+  void updateDimentions();
+  void updateHints();
   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 +87,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<XWindow *> WindowList;
+
 #endif // __window_hh
This page took 0.025602 seconds and 4 git commands to generate.