/*
* ion/ioncore/manage.h
*
- * Copyright (c) Tuomo Valkonen 1999-2006.
+ * Copyright (c) Tuomo Valkonen 1999-2007.
*
- * Ion is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
+ * See the included file LICENSE for details.
*/
#ifndef ION_IONCORE_MANAGE_H
{FALSE, FALSE, FALSE, FALSE, FALSE, ForgetGravity, {0, 0, 0, 0}, NULL}
enum{
- MANAGE_REDIR_PREFER_YES,
- MANAGE_REDIR_PREFER_NO,
- MANAGE_REDIR_STRICT_YES,
- MANAGE_REDIR_STRICT_NO
+ MANAGE_PRIORITY_NONE,
+ MANAGE_PRIORITY_LOW,
+ MANAGE_PRIORITY_NORMAL,
+ MANAGE_PRIORITY_GROUP,
+ MANAGE_PRIORITY_NO,
+ /* Special */
+ MANAGE_PRIORITY_NOREDIR
};
+#define MANAGE_PRIORITY_OK(PRIORITY, OUR) \
+ ((PRIORITY) <= (OUR) || (PRIORITY)==MANAGE_PRIORITY_NOREDIR)
+
+#define MANAGE_PRIORITY_SUB(PRIORITY, OUR) \
+ ((PRIORITY)==MANAGE_PRIORITY_NOREDIR \
+ ? MANAGE_PRIORITY_NO \
+ : (PRIORITY) < (OUR) ? (OUR) : (PRIORITY))
+
+#define MANAGE_PRIORITY_SUBX(PRIORITY, OUR) \
+ ((PRIORITY)==MANAGE_PRIORITY_NOREDIR || (OUR) < (PRIORITY) \
+ ? MANAGE_PRIORITY_NO \
+ : MANAGE_PRIORITY_NONE)
+
+
DECLSTRUCT(WManageParams){
bool switchto;
bool jumpto;
/* Rescue */
-extern bool region_rescue_clientwins(WRegion *reg, WPHolder *ph);
-extern bool region_rescue_child_clientwins(WRegion *reg, WPHolder *ph);
-extern bool region_rescue_some_clientwins(WRegion *reg, WPHolder *ph,
+INTRSTRUCT(WRescueInfo);
+
+/* if ph is given, it is used, otherwise one is looked for when needed */
+extern bool region_rescue(WRegion *reg, WPHolder *ph);
+extern bool region_rescue_needed(WRegion *reg);
+extern bool region_rescue_clientwins(WRegion *reg, WRescueInfo *info);
+extern bool region_rescue_child_clientwins(WRegion *reg, WRescueInfo *info);
+extern bool region_rescue_some_clientwins(WRegion *reg, WRescueInfo *info,
WRegionIterator *iter, void *st);