#include "all.h"
static iconv_t conversion_descriptor = 0;
-struct keyvalue_table_head by_parent = TAILQ_HEAD_INITIALIZER(by_parent);
-struct keyvalue_table_head by_child = TAILQ_HEAD_INITIALIZER(by_child);
int min(int a, int b) {
return (a < b ? a : b);
return (a > b ? a : b);
}
+bool rect_contains(Rect rect, uint32_t x, uint32_t y) {
+ return (x >= rect.x &&
+ x <= (rect.x + rect.width) &&
+ y >= rect.y &&
+ y <= (rect.y + rect.height));
+}
+
/*
* Updates *destination with new_value and returns true if it was changed or false
* if it was the same
return result;
}
-#if 0
-
-/*
- * The table_* functions emulate the behaviour of libxcb-wm, which in libxcb 0.3.4 suddenly
- * vanished. Great.
- *
- */
-bool table_put(struct keyvalue_table_head *head, uint32_t key, void *value) {
- struct keyvalue_element *element = scalloc(sizeof(struct keyvalue_element));
- element->key = key;
- element->value = value;
-
- TAILQ_INSERT_TAIL(head, element, elements);
- return true;
-}
-
-void *table_remove(struct keyvalue_table_head *head, uint32_t key) {
- struct keyvalue_element *element;
-
- TAILQ_FOREACH(element, head, elements)
- if (element->key == key) {
- void *value = element->value;
- TAILQ_REMOVE(head, element, elements);
- free(element);
- return value;
- }
-
- return NULL;
-}
-
-void *table_get(struct keyvalue_table_head *head, uint32_t key) {
- struct keyvalue_element *element;
-
- TAILQ_FOREACH(element, head, elements)
- if (element->key == key)
- return element->value;
-
- return NULL;
-}
-#endif
/*
* Starts the given application by passing it through a shell. We use double fork
* to avoid zombie processes. As the started application’s parent exits (immediately),