add the ability to close a window
authorDana Jansens <danakj@orodu.net>
Sat, 20 Jul 2002 09:17:23 +0000 (09:17 +0000)
committerDana Jansens <danakj@orodu.net>
Sat, 20 Jul 2002 09:17:23 +0000 (09:17 +0000)
util/epist/actions.hh
util/epist/epist.cc
util/epist/screen.cc
util/epist/window.cc
util/epist/window.hh

index 11c262e..1c70fc6 100644 (file)
@@ -36,17 +36,17 @@ public:
     noaction = 0,
     execute,
     iconify,
-    raiseWindow,
-    lowerWindow,
-    closeWindow,
-    toggleshade,
+    raise,
+    lower,
+    close, //done
+    toggleshade, //done
     moveWindowUp,
     moveWindowDown,
     moveWindowLeft,
     moveWindowRight,
 
-    nextWindow,
-    prevWindow,
+    nextWindow, //done for now
+    prevWindow, //done for now
     nextWindowOnAllWorkspaces,
     prevWindowOnAllWorkspaces,
 
index 3fb0646..feb6cd4 100644 (file)
@@ -88,6 +88,10 @@ epist::epist(char **argv, char *dpy_name, char *rc_file)
                             XKeysymToKeycode(getXDisplay(),
                                              XStringToKeysym("F5")),
                             Mod1Mask));
+  _actions.push_back(Action(Action::close,
+                            XKeysymToKeycode(getXDisplay(),
+                                             XStringToKeysym("F4")),
+                            Mod1Mask));
   _actions.push_back(Action(Action::nextWindow,
                             XKeysymToKeycode(getXDisplay(),
                                              XStringToKeysym("Tab")),
index 0d97b61..7c4294a 100644 (file)
@@ -175,6 +175,10 @@ void screen::handleKeypress(const XEvent &e) {
         XWindow *window = *_active;
 
         switch (it->type()) {
+        case Action::close:
+          window->close();
+          return;
+
         case Action::toggleshade:
           window->shade(! window->shaded());
           return;
index e650f41..c956bdf 100644 (file)
@@ -148,3 +148,9 @@ void XWindow::shade(const bool sh) const {
                             _window, (sh ? 1 : 0),
                             _xatom->getAtom(XAtom::net_wm_state_shaded));
 }
+
+
+void XWindow::close() const {
+  _xatom->sendClientMessage(_screen->rootWindow(), XAtom::net_close_window,
+                            _window);
+}
index edd126b..5c275d7 100644 (file)
@@ -81,6 +81,7 @@ public:
   void processEvent(const XEvent &e);
 
   void shade(const bool sh) const;
+  void close() const;
 
   bool operator == (const XWindow &w) const { return w._window == _window; }
   bool operator == (const Window &w) const { return w == _window; }