Merge pull request #1524 from berbiche/fix/gtk-layer-shell-anchors
bar: don't set layer-shell anchor for edges when width is not 'auto'
This commit is contained in:
commit
a16e54573e
15
src/bar.cpp
15
src/bar.cpp
|
@ -174,6 +174,17 @@ struct GLSSurfaceImpl : public BarSurface, public sigc::trackable {
|
||||||
GTK_LAYER_SHELL_EDGE_TOP, GTK_LAYER_SHELL_EDGE_BOTTOM}) {
|
GTK_LAYER_SHELL_EDGE_TOP, GTK_LAYER_SHELL_EDGE_BOTTOM}) {
|
||||||
gtk_layer_set_anchor(window_.gobj(), edge, unanchored != edge);
|
gtk_layer_set_anchor(window_.gobj(), edge, unanchored != edge);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable anchoring for other edges too if the width
|
||||||
|
// or the height has been set to a value other than 'auto'
|
||||||
|
// otherwise the bar will use all space
|
||||||
|
if (vertical_ && height_ > 1) {
|
||||||
|
gtk_layer_set_anchor(window_.gobj(), GTK_LAYER_SHELL_EDGE_BOTTOM, false);
|
||||||
|
gtk_layer_set_anchor(window_.gobj(), GTK_LAYER_SHELL_EDGE_TOP, false);
|
||||||
|
} else if (width_ > 1) {
|
||||||
|
gtk_layer_set_anchor(window_.gobj(), GTK_LAYER_SHELL_EDGE_LEFT, false);
|
||||||
|
gtk_layer_set_anchor(window_.gobj(), GTK_LAYER_SHELL_EDGE_RIGHT, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void setSize(uint32_t width, uint32_t height) override {
|
void setSize(uint32_t width, uint32_t height) override {
|
||||||
|
@ -563,8 +574,10 @@ waybar::Bar::Bar(struct waybar_output* w_output, const Json::Value& w_config)
|
||||||
}
|
}
|
||||||
|
|
||||||
surface_impl_->setMargins(margins_);
|
surface_impl_->setMargins(margins_);
|
||||||
surface_impl_->setPosition(position);
|
|
||||||
surface_impl_->setSize(width, height);
|
surface_impl_->setSize(width, height);
|
||||||
|
// Position needs to be set after calculating the height due to the
|
||||||
|
// GTK layer shell anchors logic relying on the dimensions of the bar.
|
||||||
|
surface_impl_->setPosition(position);
|
||||||
|
|
||||||
/* Read custom modes if available */
|
/* Read custom modes if available */
|
||||||
if (auto modes = config.get("modes", {}); modes.isObject()) {
|
if (auto modes = config.get("modes", {}); modes.isObject()) {
|
||||||
|
|
Loading…
Reference in New Issue