summaryrefslogtreecommitdiff
path: root/util/epist
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-07-20 16:52:52 +0000
committerDana Jansens <danakj@orodu.net>2002-07-20 16:52:52 +0000
commit7d67f8557b3254aeb370a995f417c86606e8a67d (patch)
treef99fda52d39f23df3cfd314458ef26ddaafcecb9 /util/epist
parentffd7021d22f534aa5974641e97911b24369d5896 (diff)
make cycling by window class work properly, was using the app name instead of class
also, make the code gcc 2.95 friendly
Diffstat (limited to 'util/epist')
-rw-r--r--util/epist/screen.cc19
-rw-r--r--util/epist/window.hh2
2 files changed, 18 insertions, 3 deletions
diff --git a/util/epist/screen.cc b/util/epist/screen.cc
index ce068122..64dccf79 100644
--- a/util/epist/screen.cc
+++ b/util/epist/screen.cc
@@ -25,6 +25,10 @@
#endif // HAVE_CONFIG_H
extern "C" {
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
+#endif // HAVE_STDIO_H
+
#ifdef HAVE_UNISTD_H
# include <sys/types.h>
# include <unistd.h>
@@ -204,6 +208,9 @@ void screen::handleKeypress(const XEvent &e) {
case Action::execute:
execCommand(it->string());
return;
+
+ default:
+ break;
}
// these actions require an active window
@@ -241,6 +248,10 @@ void screen::handleKeypress(const XEvent &e) {
case Action::toggleshade:
window->shade(! window->shaded());
return;
+
+ default:
+ assert(false); // unhandled action type!
+ break;
}
}
}
@@ -389,6 +400,10 @@ void screen::cycleWindow(const bool forward, const bool alldesktops,
WindowList::const_iterator target = _active;
+ string classname;
+ if (sameclass && target != _clients.end())
+ classname = (*target)->appClass();
+
if (target == _clients.end())
target = _clients.begin();
@@ -405,8 +420,8 @@ void screen::cycleWindow(const bool forward, const bool alldesktops,
} while (target == _clients.end() ||
(*target)->iconic() ||
(! alldesktops && (*target)->desktop() != _active_desktop) ||
- (sameclass && _active != _clients.end() &&
- (*target)->appClass() != (*_active)->appClass()));
+ (sameclass && ! classname.empty() &&
+ (*target)->appClass() != classname));
if (target != _clients.end())
(*target)->focus();
diff --git a/util/epist/window.hh b/util/epist/window.hh
index 351ec566..91cd834d 100644
--- a/util/epist/window.hh
+++ b/util/epist/window.hh
@@ -71,7 +71,7 @@ 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; }