Fix some bugs
Some checks failed
clang-format / lint (push) Has been cancelled
freebsd / build (push) Has been cancelled
linux / build (c++20, alpine) (push) Has been cancelled
linux / build (c++20, archlinux) (push) Has been cancelled
linux / build (c++20, debian) (push) Has been cancelled
linux / build (c++20, fedora) (push) Has been cancelled
linux / build (c++20, gentoo) (push) Has been cancelled
linux / build (c++20, opensuse) (push) Has been cancelled
Nix-Tests / nix-flake-check (push) Has been cancelled
Some checks failed
clang-format / lint (push) Has been cancelled
freebsd / build (push) Has been cancelled
linux / build (c++20, alpine) (push) Has been cancelled
linux / build (c++20, archlinux) (push) Has been cancelled
linux / build (c++20, debian) (push) Has been cancelled
linux / build (c++20, fedora) (push) Has been cancelled
linux / build (c++20, gentoo) (push) Has been cancelled
linux / build (c++20, opensuse) (push) Has been cancelled
Nix-Tests / nix-flake-check (push) Has been cancelled
This commit is contained in:
@ -64,22 +64,21 @@ static const zriver_command_callback_v1_listener command_callback_listener_impl{
|
||||
|
||||
static void listen_focused_output(void *data, struct zriver_seat_status_v1 *zriver_seat_status_v1,
|
||||
struct wl_output *output) {
|
||||
// Intentionally empty
|
||||
static_cast<Tags *>(data)->focused_output_ = output;
|
||||
}
|
||||
|
||||
static void listen_unfocused_output(void *data, struct zriver_seat_status_v1 *zriver_seat_status_v1,
|
||||
struct wl_output *output) {
|
||||
// Intentionally empty
|
||||
}
|
||||
struct wl_output *output) {}
|
||||
|
||||
static void listen_focused_view(void *data, struct zriver_seat_status_v1 *zriver_seat_status_v1,
|
||||
const char *title, uint32_t tags) {
|
||||
static_cast<Tags *>(data)->handle_focused_view(title, tags);
|
||||
static_cast<Tags *>(data)->AModule::update();
|
||||
}
|
||||
|
||||
static void listen_mode(void *data, struct zriver_seat_status_v1 *zriver_seat_status_v1,
|
||||
const char *mode) {
|
||||
// Intentionally empty
|
||||
static_cast<Tags *>(data)->AModule::update();
|
||||
}
|
||||
|
||||
static const zriver_seat_status_v1_listener seat_status_listener_impl{
|
||||
@ -125,6 +124,8 @@ Tags::Tags(const std::string &id, const waybar::Bar &bar, const Json::Value &con
|
||||
status_manager_{nullptr},
|
||||
control_{nullptr},
|
||||
seat_{nullptr},
|
||||
output_{nullptr},
|
||||
focused_output_{nullptr},
|
||||
bar_(bar),
|
||||
box_{bar.orientation, 0},
|
||||
output_status_{nullptr} {
|
||||
@ -149,6 +150,8 @@ Tags::Tags(const std::string &id, const waybar::Bar &bar, const Json::Value &con
|
||||
seat_status_ = zriver_status_manager_v1_get_river_seat_status(status_manager_, seat_);
|
||||
zriver_seat_status_v1_add_listener(seat_status_, &seat_status_listener_impl, this);
|
||||
|
||||
output_ = gdk_wayland_monitor_get_wl_output(bar_.output->monitor->gobj());
|
||||
|
||||
box_.set_name("tags");
|
||||
if (!id.empty()) {
|
||||
box_.get_style_context()->add_class(id);
|
||||
@ -317,20 +320,10 @@ void Tags::handle_urgent_tags(uint32_t tags) {
|
||||
}
|
||||
|
||||
void Tags::handle_focused_view(const char *title, uint32_t tags) {
|
||||
auto hide_vacant = config_["hide-vacant"].asBool();
|
||||
for (size_t i = 0; i < buttons_.size(); ++i) {
|
||||
bool visible = buttons_[i].is_visible();
|
||||
bool occupied = buttons_[i].get_style_context()->has_class("occupied");
|
||||
bool focused = buttons_[i].get_style_context()->has_class("focused");
|
||||
if ((1 << i) & tags) {
|
||||
if (hide_vacant && !visible) {
|
||||
buttons_[i].set_visible(true);
|
||||
}
|
||||
if ((1 << i) & tags && output_ == focused_output_) {
|
||||
buttons_[i].get_style_context()->add_class("current-view");
|
||||
} else {
|
||||
if (hide_vacant && !(occupied || focused)) {
|
||||
buttons_[i].set_visible(false);
|
||||
}
|
||||
buttons_[i].get_style_context()->remove_class("current-view");
|
||||
}
|
||||
}
|
||||
|
@ -65,6 +65,10 @@ Window::Window(const std::string &id, const waybar::Bar &bar, const Json::Value
|
||||
seat_{nullptr},
|
||||
bar_(bar),
|
||||
seat_status_{nullptr} {
|
||||
if (config_["default-format"].isString()) {
|
||||
default_format_ = config_["default-format"].asString();
|
||||
}
|
||||
|
||||
struct wl_display *display = Client::inst()->wl_display;
|
||||
struct wl_registry *registry = wl_display_get_registry(display);
|
||||
wl_registry_add_listener(registry, ®istry_listener_impl, this);
|
||||
@ -104,7 +108,16 @@ void Window::handle_focused_view(const char *title, uint32_t tags) {
|
||||
if (focused_output_ != output_) return;
|
||||
|
||||
if (std::strcmp(title, "") == 0 || format_.empty()) {
|
||||
label_.hide(); // hide empty labels or labels with empty format
|
||||
if (default_format_.has_value()) {
|
||||
label_.show();
|
||||
const std::string &default_format = default_format_.value();
|
||||
label_.set_markup(default_format);
|
||||
if (tooltipEnabled()) {
|
||||
label_.set_tooltip_markup(default_format);
|
||||
}
|
||||
} else {
|
||||
label_.hide(); // hide empty labels or labels with empty format
|
||||
}
|
||||
} else {
|
||||
label_.show();
|
||||
auto text = fmt::format(fmt::runtime(format_), Glib::Markup::escape_text(title).raw());
|
||||
|
Reference in New Issue
Block a user