sway/include/swaybar/status_line.h
Hristo Venev 7affe5c1bd swaybar: fix i3bar relative coordinates when scaling is used
24e8ba048a 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.
2020-02-10 18:58:09 +01:00

47 lines
903 B
C

#ifndef _SWAYBAR_STATUS_LINE_H
#define _SWAYBAR_STATUS_LINE_H
#include <json.h>
#include <stdint.h>
#include <stdio.h>
#include <stdbool.h>
#include "bar.h"
enum status_protocol {
PROTOCOL_UNDEF,
PROTOCOL_ERROR,
PROTOCOL_TEXT,
PROTOCOL_I3BAR,
};
struct status_line {
struct swaybar *bar;
pid_t pid;
int read_fd, write_fd;
FILE *read, *write;
enum status_protocol protocol;
const char *text;
struct wl_list blocks; // i3bar_block::link
int stop_signal;
int cont_signal;
bool click_events;
bool float_event_coords;
bool clicked;
char *buffer;
size_t buffer_size;
size_t buffer_index;
bool started;
bool expecting_comma;
json_tokener *tokener;
};
struct status_line *status_line_init(char *cmd);
void status_error(struct status_line *status, const char *text);
bool status_handle_readable(struct status_line *status);
void status_line_free(struct status_line *status);
#endif