diff options
Diffstat (limited to 'swaybar/i3bar.c')
-rw-r--r-- | swaybar/i3bar.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/swaybar/i3bar.c b/swaybar/i3bar.c index 5c8b87a2..4bcd5843 100644 --- a/swaybar/i3bar.c +++ b/swaybar/i3bar.c | |||
@@ -267,8 +267,8 @@ bool i3bar_handle_readable(struct status_line *status) { | |||
267 | } | 267 | } |
268 | 268 | ||
269 | enum hotspot_event_handling i3bar_block_send_click(struct status_line *status, | 269 | enum hotspot_event_handling i3bar_block_send_click(struct status_line *status, |
270 | struct i3bar_block *block, int x, int y, int rx, int ry, int w, int h, | 270 | struct i3bar_block *block, double x, double y, double rx, double ry, |
271 | uint32_t button) { | 271 | double w, double h, int scale, uint32_t button) { |
272 | sway_log(SWAY_DEBUG, "block %s clicked", block->name); | 272 | sway_log(SWAY_DEBUG, "block %s clicked", block->name); |
273 | if (!block->name || !status->click_events) { | 273 | if (!block->name || !status->click_events) { |
274 | return HOTSPOT_PROCESS; | 274 | return HOTSPOT_PROCESS; |
@@ -285,12 +285,22 @@ enum hotspot_event_handling i3bar_block_send_click(struct status_line *status, | |||
285 | json_object_object_add(event_json, "button", | 285 | json_object_object_add(event_json, "button", |
286 | json_object_new_int(event_to_x11_button(button))); | 286 | json_object_new_int(event_to_x11_button(button))); |
287 | json_object_object_add(event_json, "event", json_object_new_int(button)); | 287 | json_object_object_add(event_json, "event", json_object_new_int(button)); |
288 | json_object_object_add(event_json, "x", json_object_new_int(x)); | 288 | if (status->float_event_coords) { |
289 | json_object_object_add(event_json, "y", json_object_new_int(y)); | 289 | json_object_object_add(event_json, "x", json_object_new_double(x)); |
290 | json_object_object_add(event_json, "relative_x", json_object_new_int(rx)); | 290 | json_object_object_add(event_json, "y", json_object_new_double(y)); |
291 | json_object_object_add(event_json, "relative_y", json_object_new_int(ry)); | 291 | json_object_object_add(event_json, "relative_x", json_object_new_double(rx)); |
292 | json_object_object_add(event_json, "width", json_object_new_int(w)); | 292 | json_object_object_add(event_json, "relative_y", json_object_new_double(ry)); |
293 | json_object_object_add(event_json, "height", json_object_new_int(h)); | 293 | json_object_object_add(event_json, "width", json_object_new_double(w)); |
294 | json_object_object_add(event_json, "height", json_object_new_double(h)); | ||
295 | } else { | ||
296 | json_object_object_add(event_json, "x", json_object_new_int(x)); | ||
297 | json_object_object_add(event_json, "y", json_object_new_int(y)); | ||
298 | json_object_object_add(event_json, "relative_x", json_object_new_int(rx)); | ||
299 | json_object_object_add(event_json, "relative_y", json_object_new_int(ry)); | ||
300 | json_object_object_add(event_json, "width", json_object_new_int(w)); | ||
301 | json_object_object_add(event_json, "height", json_object_new_int(h)); | ||
302 | } | ||
303 | json_object_object_add(event_json, "scale", json_object_new_int(scale)); | ||
294 | if (dprintf(status->write_fd, "%s%s\n", status->clicked ? "," : "", | 304 | if (dprintf(status->write_fd, "%s%s\n", status->clicked ? "," : "", |
295 | json_object_to_json_string(event_json)) < 0) { | 305 | json_object_to_json_string(event_json)) < 0) { |
296 | status_error(status, "[failed to write click event]"); | 306 | status_error(status, "[failed to write click event]"); |