Allow multiple marks on windows.

This patch allows multiple marks to be set on a single window. The restriction that a mark may
only be on one window at a time is still upheld as this is necessary for commands like
"move window to mark" to make sense.

relates to #2014
This commit is contained in:
Ingo Bürk
2015-10-19 18:10:20 +02:00
parent 0425f48835
commit 9bb2f038ab
12 changed files with 238 additions and 70 deletions

View File

@ -46,6 +46,7 @@ typedef struct Con Con;
typedef struct Match Match;
typedef struct Assignment Assignment;
typedef struct Window i3Window;
typedef struct mark_t mark_t;
/******************************************************************************
* Helper types
@ -523,6 +524,12 @@ typedef enum { CF_NONE = 0,
CF_OUTPUT = 1,
CF_GLOBAL = 2 } fullscreen_mode_t;
struct mark_t {
char *name;
TAILQ_ENTRY(mark_t) marks;
};
/**
* A 'Con' represents everything from the X11 root window down to a single X11 window.
*
@ -575,8 +582,8 @@ struct Con {
* displayed on whichever of the containers is currently visible */
char *sticky_group;
/* user-definable mark to jump to this container later */
char *mark;
/* user-definable marks to jump to this container later */
TAILQ_HEAD(marks_head, mark_t) marks_head;
/* cached to decide whether a redraw is needed */
bool mark_changed;