]> Dogcows Code - chaz/openbox/blobdiff - util/epist/window.hh
implement toggleMaximize(Vert|Horz|Full)
[chaz/openbox] / util / epist / window.hh
index 140d63bc174c008b1883f2703364f62e658a38d4..e7f382808cc56de23ca33221166067ef7ae75208 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
@@ -28,32 +28,78 @@ extern "C" {
 }
 
 #include <list>
+#include <string>
 
+class epist;
+class screen;
 class XWindow;
+class XAtom;
 
-typedef std::list<XWindow> WindowList;
+typedef std::list<XWindow *> WindowList;
 
 class XWindow {
+public:
+  enum Max {
+    Max_None,
+    Max_Horz,
+    Max_Vert,
+    Max_Full
+  };
+
 private:
+  epist *_epist;
+  screen *_screen;
+  XAtom *_xatom;
   Window _window;
+  
   unsigned int _desktop;
+  std::string _title;
+  std::string _app_name;
+  std::string _app_class;
+
+  // states
   bool _shaded;
   bool _iconic;
   bool _max_vert;
   bool _max_horz;
 
+  bool _unmapped;
+
+  void updateState();
+  void updateDesktop();
+  void updateTitle();
+  void updateClass();
+
+  void findFramePosition(int &x, int &y) const;
+
 public:
-  XWindow(Window window);
+  XWindow(epist *epist, screen *screen, Window window);
   virtual ~XWindow();
 
   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_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; }
 
-  void updateState();
+  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 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; }
This page took 0.027143 seconds and 4 git commands to generate.