# Depend on the object files of all source-files in src/*.c and on all header files
AUTOGENERATED:=src/cfgparse.tab.c src/cfgparse.yy.c src/cmdparse.tab.c src/cmdparse.yy.c
-FILES:=src/ipc.c src/nc.c src/log.c src/util.c src/tree.c src/xcb.c src/manage.c src/workspace.c src/x.c src/floating.c src/click.c src/config.c src/handlers.c src/randr.c src/xinerama.c src/con.c src/load_layout.c src/render.c src/window.c
+FILES:=src/ipc.c src/nc.c src/log.c src/util.c src/tree.c src/xcb.c src/manage.c src/workspace.c src/x.c src/floating.c src/click.c src/config.c src/handlers.c src/randr.c src/xinerama.c src/con.c src/load_layout.c src/render.c src/window.c src/match.c
FILES:=$(FILES:.c=.o)
HEADERS:=$(filter-out include/loglevels.h,$(wildcard include/*.h))
Con *con_for_window(i3Window *window, Match **store_match);
void con_attach(Con *con, Con *parent);
void con_detach(Con *con);
-bool match_matches_window(Match *match, i3Window *window);
enum { WINDOW_ADD = 0, WINDOW_REMOVE = 1 };
void con_fix_percent(Con *con, int action);
--- /dev/null
+#ifndef _MATCH_H
+#define _MATCH_H
+
+bool match_is_empty(Match *match);
+bool match_matches_window(Match *match, i3Window *window);
+
+#endif
return NULL;
}
-bool match_matches_window(Match *match, i3Window *window) {
- /* TODO: pcre, full matching, … */
- if (match->class != NULL && strcasecmp(match->class, window->class_class) == 0) {
- LOG("match made by window class (%s)\n", window->class_class);
- return true;
- }
-
- if (match->instance != NULL && strcasecmp(match->instance, window->class_instance) == 0) {
- LOG("match made by window instance (%s)\n", window->class_instance);
- return true;
- }
-
-
- if (match->id != XCB_NONE && window->id == match->id) {
- LOG("match made by window id (%d)\n", window->id);
- return true;
- }
-
- LOG("window %d (%s) could not be matched\n", window->id, window->class_class);
-
- return false;
-}
-
/*
* Returns the first container which wants to swallow this window
* TODO: priority
--- /dev/null
+/*
+ * vim:ts=4:sw=4:expandtab
+ *
+ * i3 - an improved dynamic tiling window manager
+ * © 2009-2010 Michael Stapelberg and contributors (see also: LICENSE)
+ *
+ */
+
+#include "all.h"
+
+bool match_is_empty(Match *match) {
+ /* we cannot simply use memcmp() because the structure is part of a
+ * TAILQ and I don’t want to start with things like assuming that the
+ * last member of a struct really is at the end in memory… */
+ return (match->title == NULL &&
+ match->application == NULL &&
+ match->class == NULL &&
+ match->instance == NULL &&
+ match->id == XCB_NONE &&
+ match->con_id == NULL &&
+ match->floating == false);
+}
+
+bool match_matches_window(Match *match, i3Window *window) {
+ /* TODO: pcre, full matching, … */
+ if (match->class != NULL && window->class_class != NULL && strcasecmp(match->class, window->class_class) == 0) {
+ LOG("match made by window class (%s)\n", window->class_class);
+ return true;
+ }
+
+ if (match->instance != NULL && window->class_instance != NULL && strcasecmp(match->instance, window->class_instance) == 0) {
+ LOG("match made by window instance (%s)\n", window->class_instance);
+ return true;
+ }
+
+
+ if (match->id != XCB_NONE && window->id == match->id) {
+ LOG("match made by window id (%d)\n", window->id);
+ return true;
+ }
+
+ LOG("window %d (%s) could not be matched\n", window->id, window->class_class);
+
+ return false;
+}
+