summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ISSUE_TEMPLATE.md9
-rw-r--r--common/util.c37
-rw-r--r--include/util.h9
-rw-r--r--sway/desktop/render.c7
-rw-r--r--sway/tree/view.c22
5 files changed, 19 insertions, 65 deletions
diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
index 21f0a36e..5f3bb6bb 100644
--- a/ISSUE_TEMPLATE.md
+++ b/ISSUE_TEMPLATE.md
@@ -1,4 +1,11 @@
1Please include the following four components in your bug report: sway version, debug log, configuration (if applicable), and an explanation of steps taken to reproduce the issue. 1If you are using the nvidia proprietary driver for any reason, you have two choices:
2
31. Uninstall it and use nouveau instead
42. Use X11+i3 and close your browser tab
5
6If `lsmod | grep nvidia | wc -l` shows anything other than zero, your bug report is not welcome here.
7
8Otherwise, please include the following four components in your bug report: sway version, debug log, configuration (if applicable), and an explanation of steps taken to reproduce the issue.
2 9
3Obtain your version like so: 10Obtain your version like so:
4 11
diff --git a/common/util.c b/common/util.c
index 467aa4b5..78d46a2a 100644
--- a/common/util.c
+++ b/common/util.c
@@ -138,40 +138,3 @@ bool parse_boolean(const char *boolean, bool current) {
138 // All other values are false to match i3 138 // All other values are false to match i3
139 return false; 139 return false;
140} 140}
141
142char* resolve_path(const char* path) {
143 struct stat sb;
144 ssize_t r;
145 int i;
146 char *current = NULL;
147 char *resolved = NULL;
148
149 if(!(current = strdup(path))) {
150 return NULL;
151 }
152 for (i = 0; i < 16; ++i) {
153 if (lstat(current, &sb) == -1) {
154 goto failed;
155 }
156 if((sb.st_mode & S_IFMT) != S_IFLNK) {
157 return current;
158 }
159 if (!(resolved = malloc(sb.st_size + 1))) {
160 goto failed;
161 }
162 r = readlink(current, resolved, sb.st_size);
163 if (r == -1 || r > sb.st_size) {
164 goto failed;
165 }
166 resolved[r] = '\0';
167 free(current);
168 current = strdup(resolved);
169 free(resolved);
170 resolved = NULL;
171 }
172
173failed:
174 free(resolved);
175 free(current);
176 return NULL;
177}
diff --git a/include/util.h b/include/util.h
index c39c92b1..56ca2eb8 100644
--- a/include/util.h
+++ b/include/util.h
@@ -59,13 +59,4 @@ uint32_t parse_color(const char *color);
59 */ 59 */
60bool parse_boolean(const char *boolean, bool current); 60bool parse_boolean(const char *boolean, bool current);
61 61
62/**
63 * Given a path string, recurseively resolves any symlinks to their targets
64 * (which may be a file, directory) and returns the result.
65 * argument is returned. Caller must free the returned buffer.
66 * If an error occures, if the path does not exist or if the path corresponds
67 * to a dangling symlink, NULL is returned.
68 */
69char* resolve_path(const char* path);
70
71#endif 62#endif
diff --git a/sway/desktop/render.c b/sway/desktop/render.c
index c1fa0c8c..1a72f752 100644
--- a/sway/desktop/render.c
+++ b/sway/desktop/render.c
@@ -781,13 +781,6 @@ static void render_containers_stacked(struct sway_output *output,
781 781
782static void render_containers(struct sway_output *output, 782static void render_containers(struct sway_output *output,
783 pixman_region32_t *damage, struct parent_data *parent) { 783 pixman_region32_t *damage, struct parent_data *parent) {
784 if (parent->children->length == 1) {
785 struct sway_container *child = parent->children->items[0];
786 if (child->view) {
787 render_containers_linear(output, damage, parent);
788 return;
789 }
790 }
791 switch (parent->layout) { 784 switch (parent->layout) {
792 case L_NONE: 785 case L_NONE:
793 case L_HORIZ: 786 case L_HORIZ:
diff --git a/sway/tree/view.c b/sway/tree/view.c
index cf67acbb..4bc9e0f3 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -242,23 +242,23 @@ void view_autoconfigure(struct sway_view *view) {
242 view->border_bottom = bottom_y != ws->y + ws->height; 242 view->border_bottom = bottom_y != ws->y + ws->height;
243 } 243 }
244 244
245 double x, y, width, height;
246 x = y = width = height = 0;
247 double y_offset = 0;
248
245 // In a tabbed or stacked container, the container's y is the top of the 249 // In a tabbed or stacked container, the container's y is the top of the
246 // title area. We have to offset the surface y by the height of the title, 250 // title area. We have to offset the surface y by the height of the title,
247 // bar, and disable any top border because we'll always have the title bar. 251 // bar, and disable any top border because we'll always have the title bar.
248 double y_offset = 0;
249 enum sway_container_layout layout = container_parent_layout(con); 252 enum sway_container_layout layout = container_parent_layout(con);
250 list_t *siblings = container_get_siblings(con); 253 if (layout == L_TABBED && !container_is_floating(con)) {
251 if (siblings->length > 1 && !container_is_floating(con)) { 254 y_offset = container_titlebar_height();
252 if (layout == L_TABBED) { 255 view->border_top = false;
253 y_offset = container_titlebar_height(); 256 } else if (layout == L_STACKED && !container_is_floating(con)) {
254 view->border_top = false; 257 list_t *siblings = container_get_siblings(con);
255 } else if (layout == L_STACKED) { 258 y_offset = container_titlebar_height() * siblings->length;
256 y_offset = container_titlebar_height() * siblings->length; 259 view->border_top = false;
257 view->border_top = false;
258 }
259 } 260 }
260 261
261 double x = 0, y = 0, width = 0, height = 0;
262 switch (view->border) { 262 switch (view->border) {
263 case B_CSD: 263 case B_CSD:
264 case B_NONE: 264 case B_NONE: