#include <xcb/xcb_atom.h>
#include <stdbool.h>
#include <pcre.h>
+#include <sys/time.h>
#include "queue.h"
/** Whether the application needs to receive WM_TAKE_FOCUS */
bool needs_take_focus;
+ /** When this window was marked urgent. 0 means not urgent */
+ struct timeval urgent;
+
/** Whether this window accepts focus. We store this inverted so that the
* default will be 'accepts focus'. */
bool doesnt_accept_focus;
struct regex *instance;
struct regex *mark;
struct regex *role;
+ enum {
+ U_DONTCHECK = -1,
+ U_LATEST = 0,
+ U_OLDEST = 1
+ } urgent;
enum {
M_DONTCHECK = -1,
M_NODOCK = 0,
*/
enum { M_HERE = 0, M_ASSIGN_WS, M_BELOW } insert_where;
+ /* Whether this match was generated when restarting i3 inplace.
+ * Leads to not setting focus when managing a new window, because the old
+ * focus stack should be restored. */
+ bool restart_mode;
+
TAILQ_ENTRY(Match) matches;
};
SCRATCHPAD_FRESH = 1,
SCRATCHPAD_CHANGED = 2
} scratchpad_state;
+
+ /* The ID of this container before restarting. Necessary to correctly
+ * interpret back-references in the JSON (such as the focus stack). */
+ int old_id;
};
#endif