summaryrefslogtreecommitdiffstats
path: root/sway
diff options
context:
space:
mode:
authorLibravatar Ian Fan <ianfan0@gmail.com>2018-07-14 11:10:36 +0100
committerLibravatar Ian Fan <ianfan0@gmail.com>2018-08-01 16:57:15 +0100
commit317217f2c87aba4463806e211c22296ac9230b6c (patch)
treedade74c4b5a98b4f1e71e28aad771e6726b0e9a3 /sway
parentipc: add barconfig_update event on config reload (diff)
downloadsway-317217f2c87aba4463806e211c22296ac9230b6c.tar.gz
sway-317217f2c87aba4463806e211c22296ac9230b6c.tar.zst
sway-317217f2c87aba4463806e211c22296ac9230b6c.zip
ipc: add window::mark event
Diffstat (limited to 'sway')
-rw-r--r--sway/commands/mark.c2
-rw-r--r--sway/ipc-json.c9
-rw-r--r--sway/tree/view.c13
3 files changed, 19 insertions, 5 deletions
diff --git a/sway/commands/mark.c b/sway/commands/mark.c
index 5a897e69..9ea8c301 100644
--- a/sway/commands/mark.c
+++ b/sway/commands/mark.c
@@ -58,7 +58,7 @@ struct cmd_results *cmd_mark(int argc, char **argv) {
58 view_find_and_unmark(mark); 58 view_find_and_unmark(mark);
59 59
60 if (!toggle || !had_mark) { 60 if (!toggle || !had_mark) {
61 list_add(view->marks, strdup(mark)); 61 view_add_mark(view, mark);
62 } 62 }
63 63
64 free(mark); 64 free(mark);
diff --git a/sway/ipc-json.c b/sway/ipc-json.c
index c49ea47e..4c2bcc98 100644
--- a/sway/ipc-json.c
+++ b/sway/ipc-json.c
@@ -201,6 +201,15 @@ static void ipc_json_describe_view(struct sway_container *c, json_object *object
201 bool urgent = c->type == C_VIEW ? 201 bool urgent = c->type == C_VIEW ?
202 view_is_urgent(c->sway_view) : container_has_urgent_child(c); 202 view_is_urgent(c->sway_view) : container_has_urgent_child(c);
203 json_object_object_add(object, "urgent", json_object_new_boolean(urgent)); 203 json_object_object_add(object, "urgent", json_object_new_boolean(urgent));
204
205 if (c->type == C_VIEW) {
206 json_object *marks = json_object_new_array();
207 list_t *view_marks = c->sway_view->marks;
208 for (int i = 0; i < view_marks->length; ++i) {
209 json_object_array_add(marks, json_object_new_string(view_marks->items[i]));
210 }
211 json_object_object_add(object, "marks", marks);
212 }
204} 213}
205 214
206static void focus_inactive_children_iterator(struct sway_container *c, void *data) { 215static void focus_inactive_children_iterator(struct sway_container *c, void *data) {
diff --git a/sway/tree/view.c b/sway/tree/view.c
index 7300f207..48b39e80 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -888,6 +888,7 @@ bool view_find_and_unmark(char *mark) {
888 free(view_mark); 888 free(view_mark);
889 list_del(view->marks, i); 889 list_del(view->marks, i);
890 view_update_marks_textures(view); 890 view_update_marks_textures(view);
891 ipc_event_window(container, "mark");
891 return true; 892 return true;
892 } 893 }
893 } 894 }
@@ -895,11 +896,10 @@ bool view_find_and_unmark(char *mark) {
895} 896}
896 897
897void view_clear_marks(struct sway_view *view) { 898void view_clear_marks(struct sway_view *view) {
898 for (int i = 0; i < view->marks->length; ++i) { 899 while (view->marks->length) {
899 free(view->marks->items[i]); 900 list_del(view->marks, 0);
901 ipc_event_window(view->swayc, "mark");
900 } 902 }
901 list_free(view->marks);
902 view->marks = create_list();
903} 903}
904 904
905bool view_has_mark(struct sway_view *view, char *mark) { 905bool view_has_mark(struct sway_view *view, char *mark) {
@@ -912,6 +912,11 @@ bool view_has_mark(struct sway_view *view, char *mark) {
912 return false; 912 return false;
913} 913}
914 914
915void view_add_mark(struct sway_view *view, char *mark) {
916 list_add(view->marks, strdup(mark));
917 ipc_event_window(view->swayc, "mark");
918}
919
915static void update_marks_texture(struct sway_view *view, 920static void update_marks_texture(struct sway_view *view,
916 struct wlr_texture **texture, struct border_colors *class) { 921 struct wlr_texture **texture, struct border_colors *class) {
917 struct sway_container *output = container_parent(view->swayc, C_OUTPUT); 922 struct sway_container *output = container_parent(view->swayc, C_OUTPUT);