Fix: The 1 px gap that would show up when the bar was hidden. (#996)

This commit is contained in:
Jas Singh
2025-06-03 23:19:45 -07:00
committed by GitHub
parent 62813f890f
commit 2418d8ed52

View File

@@ -79,7 +79,9 @@ export class BarLayout {
visible={this._visibilityVar()} visible={this._visibilityVar()}
anchor={this._anchorVar()} anchor={this._anchorVar()}
layer={this._layerVar()} layer={this._layerVar()}
exclusivity={Astal.Exclusivity.EXCLUSIVE} exclusivity={bind(this._visibilityVar).as((visible) =>
visible ? Astal.Exclusivity.EXCLUSIVE : Astal.Exclusivity.NORMAL,
)}
onDestroy={() => this._cleanup()} onDestroy={() => this._cleanup()}
> >
<box className="bar-panel-container"> <box className="bar-panel-container">
@@ -118,11 +120,6 @@ export class BarLayout {
private _initializeVisibilityVariables(): void { private _initializeVisibilityVariables(): void {
const { layouts } = options.bar; const { layouts } = options.bar;
this._visibilityVar = Variable.derive([bind(layouts)], (currentLayouts) => {
const foundLayout = getLayoutForMonitor(this._hyprlandMonitor, currentLayouts);
return !isLayoutEmpty(foundLayout);
});
this._classNameVar = Variable.derive([bind(layouts)], (currentLayouts) => { this._classNameVar = Variable.derive([bind(layouts)], (currentLayouts) => {
const foundLayout = getLayoutForMonitor(this._hyprlandMonitor, currentLayouts); const foundLayout = getLayoutForMonitor(this._hyprlandMonitor, currentLayouts);
return !isLayoutEmpty(foundLayout) ? 'bar' : ''; return !isLayoutEmpty(foundLayout) ? 'bar' : '';
@@ -180,6 +177,17 @@ export class BarLayout {
middle: this._createSectionBinding('middle'), middle: this._createSectionBinding('middle'),
right: this._createSectionBinding('right'), right: this._createSectionBinding('right'),
}; };
this._visibilityVar = Variable.derive(
[
bind(this._barSectionsVar.left),
bind(this._barSectionsVar.middle),
bind(this._barSectionsVar.right),
],
(left, middle, right) => {
return left.length > 0 || middle.length > 0 || right.length > 0;
},
);
} }
private _createSectionBinding(section: 'left' | 'middle' | 'right'): Variable<JSX.Element[]> { private _createSectionBinding(section: 'left' | 'middle' | 'right'): Variable<JSX.Element[]> {