aboutsummaryrefslogtreecommitdiffstats
path: root/include/swaybar
diff options
context:
space:
mode:
authorLibravatar Hristo Venev <hristo@venev.name>2020-02-01 18:08:00 +0100
committerLibravatar Simon Ser <contact@emersion.fr>2020-02-10 18:58:09 +0100
commit7affe5c1bda53a2bb57295b7b6dbe4494e8c007b (patch)
treed55e64c43a785f15c6abf77d1891bb9d70b3e529 /include/swaybar
parentDo not truncate pointer coordinates to int. (diff)
downloadsway-7affe5c1bda53a2bb57295b7b6dbe4494e8c007b.tar.gz
sway-7affe5c1bda53a2bb57295b7b6dbe4494e8c007b.tar.zst
sway-7affe5c1bda53a2bb57295b7b6dbe4494e8c007b.zip
swaybar: fix i3bar relative coordinates when scaling is used
24e8ba048aef4751c6fa1d5982ee634f921e6cf6 did not take scaling into account. The hotspot size used pixel coordinates, the absolute coordinates were logical, and the relative coordinates were completely wrong. This commit makes all coordinates use logical values. If `"float_event_coords":true` is sent in the handshake message, coordinates are sent as floating-point values. The "scale" field is an integer containing the scale value.
Diffstat (limited to 'include/swaybar')
-rw-r--r--include/swaybar/i3bar.h4
-rw-r--r--include/swaybar/input.h2
-rw-r--r--include/swaybar/status_line.h1
3 files changed, 4 insertions, 3 deletions
diff --git a/include/swaybar/i3bar.h b/include/swaybar/i3bar.h
index 0b3bee21..df8cdd09 100644
--- a/include/swaybar/i3bar.h
+++ b/include/swaybar/i3bar.h
@@ -28,7 +28,7 @@ struct i3bar_block {
28void i3bar_block_unref(struct i3bar_block *block); 28void i3bar_block_unref(struct i3bar_block *block);
29bool i3bar_handle_readable(struct status_line *status); 29bool i3bar_handle_readable(struct status_line *status);
30enum hotspot_event_handling i3bar_block_send_click(struct status_line *status, 30enum hotspot_event_handling i3bar_block_send_click(struct status_line *status,
31 struct i3bar_block *block, int x, int y, int rx, int ry, int w, int h, 31 struct i3bar_block *block, double x, double y, double rx, double ry,
32 uint32_t button); 32 double w, double h, int scale, uint32_t button);
33 33
34#endif 34#endif
diff --git a/include/swaybar/input.h b/include/swaybar/input.h
index 6557a29e..65e49218 100644
--- a/include/swaybar/input.h
+++ b/include/swaybar/input.h
@@ -44,7 +44,7 @@ struct swaybar_hotspot {
44 struct wl_list link; // swaybar_output::hotspots 44 struct wl_list link; // swaybar_output::hotspots
45 int x, y, width, height; 45 int x, y, width, height;
46 enum hotspot_event_handling (*callback)(struct swaybar_output *output, 46 enum hotspot_event_handling (*callback)(struct swaybar_output *output,
47 struct swaybar_hotspot *hotspot, int x, int y, uint32_t button, 47 struct swaybar_hotspot *hotspot, double x, double y, uint32_t button,
48 void *data); 48 void *data);
49 void (*destroy)(void *data); 49 void (*destroy)(void *data);
50 void *data; 50 void *data;
diff --git a/include/swaybar/status_line.h b/include/swaybar/status_line.h
index 3601a11e..65c3a796 100644
--- a/include/swaybar/status_line.h
+++ b/include/swaybar/status_line.h
@@ -28,6 +28,7 @@ struct status_line {
28 int cont_signal; 28 int cont_signal;
29 29
30 bool click_events; 30 bool click_events;
31 bool float_event_coords;
31 bool clicked; 32 bool clicked;
32 char *buffer; 33 char *buffer;
33 size_t buffer_size; 34 size_t buffer_size;