move match_* to match.c

This commit is contained in:
Michael Stapelberg 2010-04-16 22:51:25 +02:00
parent bb220b27d7
commit 8d05039b04
5 changed files with 54 additions and 25 deletions

View File

@ -4,7 +4,7 @@ include $(TOPDIR)/common.mk
# 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))

View File

@ -14,7 +14,6 @@ Con *con_by_frame_id(xcb_window_t frame);
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);

7
include/match.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef _MATCH_H
#define _MATCH_H
bool match_is_empty(Match *match);
bool match_matches_window(Match *match, i3Window *window);
#endif

View File

@ -221,29 +221,6 @@ Con *con_by_frame_id(xcb_window_t frame) {
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

46
src/match.c Normal file
View File

@ -0,0 +1,46 @@
/*
* 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 dont 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;
}