Skip to content

Commit 02a2796

Browse files
CtByteLGUG2Z
authored andcommitted
fix(bar): correct time widget binary format alignment
This commit adds a bit of offset to the time widget's binary clocks so they are more in the middle. It also fixes some visual changes that were caused by upgrading to eframe 0.31
1 parent a0eb025 commit 02a2796

File tree

1 file changed

+36
-27
lines changed

1 file changed

+36
-27
lines changed

komorebi-bar/src/time.rs

+36-27
Original file line numberDiff line numberDiff line change
@@ -110,36 +110,37 @@ impl Time {
110110
let full_height = size;
111111
let height = full_height / 4.0;
112112
let width = height;
113+
let offset = height / 2.0 - height / 8.0;
113114

114115
let (response, painter) =
115-
ui.allocate_painter(Vec2::new(width, full_height), Sense::hover());
116+
ui.allocate_painter(Vec2::new(width, full_height + offset * 2.0), Sense::hover());
116117
let color = ctx.style().visuals.text_color();
117118

118119
let c = response.rect.center();
119120
let r = height / 2.0 - 0.5;
120121

121122
if number == 1 || number == 3 || number == 5 || number == 7 || number == 9 {
122-
painter.circle_filled(c + Vec2::new(0.0, height * 1.50), r, color);
123+
painter.circle_filled(c + Vec2::new(0.0, height * 1.50 + offset), r, color);
123124
} else {
124-
painter.circle_filled(c + Vec2::new(0.0, height * 1.50), r / 2.5, color);
125+
painter.circle_filled(c + Vec2::new(0.0, height * 1.50 + offset), r / 2.5, color);
125126
}
126127

127128
if number == 2 || number == 3 || number == 6 || number == 7 {
128-
painter.circle_filled(c + Vec2::new(0.0, height * 0.50), r, color);
129+
painter.circle_filled(c + Vec2::new(0.0, height * 0.50 + offset), r, color);
129130
} else {
130-
painter.circle_filled(c + Vec2::new(0.0, height * 0.50), r / 2.5, color);
131+
painter.circle_filled(c + Vec2::new(0.0, height * 0.50 + offset), r / 2.5, color);
131132
}
132133

133134
if number == 4 || number == 5 || number == 6 || number == 7 {
134-
painter.circle_filled(c + Vec2::new(0.0, -height * 0.50), r, color);
135+
painter.circle_filled(c + Vec2::new(0.0, -height * 0.50 + offset), r, color);
135136
} else if max_power > 2 {
136-
painter.circle_filled(c + Vec2::new(0.0, -height * 0.50), r / 2.5, color);
137+
painter.circle_filled(c + Vec2::new(0.0, -height * 0.50 + offset), r / 2.5, color);
137138
}
138139

139140
if number == 8 || number == 9 {
140-
painter.circle_filled(c + Vec2::new(0.0, -height * 1.50), r, color);
141+
painter.circle_filled(c + Vec2::new(0.0, -height * 1.50 + offset), r, color);
141142
} else if max_power > 3 {
142-
painter.circle_filled(c + Vec2::new(0.0, -height * 1.50), r / 2.5, color);
143+
painter.circle_filled(c + Vec2::new(0.0, -height * 1.50 + offset), r / 2.5, color);
143144
}
144145
}
145146

@@ -154,9 +155,10 @@ impl Time {
154155
let full_height = size;
155156
let height = full_height / 4.0;
156157
let width = height * 1.5;
158+
let offset = height / 2.0 - height / 8.0;
157159

158160
let (response, painter) =
159-
ui.allocate_painter(Vec2::new(width, full_height), Sense::hover());
161+
ui.allocate_painter(Vec2::new(width, full_height + offset * 2.0), Sense::hover());
160162
let color = ctx.style().visuals.text_color();
161163
let stroke = Stroke::new(1.0, color);
162164

@@ -174,22 +176,25 @@ impl Time {
174176
};
175177

176178
if max_power == 2 {
177-
let mut rect = response.rect.shrink(stroke.width);
179+
let mut rect = response
180+
.rect
181+
.shrink2(Vec2::new(stroke.width, stroke.width + offset));
178182
rect.set_height(rect.height() - height * 2.0);
179-
rect = rect.translate(Vec2::new(0.0, height * 2.0));
183+
rect = rect.translate(Vec2::new(0.0, height * 2.0 + offset));
180184
painter.rect_stroke(rect, round_all, stroke, StrokeKind::Outside);
181185
} else if max_power == 3 {
182-
let mut rect = response.rect.shrink(stroke.width);
186+
let mut rect = response
187+
.rect
188+
.shrink2(Vec2::new(stroke.width, stroke.width + offset));
183189
rect.set_height(rect.height() - height);
184-
rect = rect.translate(Vec2::new(0.0, height));
190+
rect = rect.translate(Vec2::new(0.0, height + offset));
185191
painter.rect_stroke(rect, round_all, stroke, StrokeKind::Outside);
186192
} else {
187-
painter.rect_stroke(
188-
response.rect.shrink(stroke.width),
189-
round_all,
190-
stroke,
191-
StrokeKind::Outside,
192-
);
193+
let mut rect = response
194+
.rect
195+
.shrink2(Vec2::new(stroke.width, stroke.width + offset));
196+
rect = rect.translate(Vec2::new(0.0, 0.0 + offset));
197+
painter.rect_stroke(rect, round_all, stroke, StrokeKind::Outside);
193198
}
194199

195200
let mut rect_bin = response.rect;
@@ -198,15 +203,15 @@ impl Time {
198203
if number == 1 || number == 5 || number == 9 {
199204
rect_bin.set_height(height);
200205
painter.rect_filled(
201-
rect_bin.translate(Vec2::new(0.0, height * 3.0)),
206+
rect_bin.translate(Vec2::new(stroke.width, height * 3.0 + offset * 2.0)),
202207
round_bottom,
203208
color,
204209
);
205210
}
206211
if number == 2 {
207212
rect_bin.set_height(height);
208213
painter.rect_filled(
209-
rect_bin.translate(Vec2::new(0.0, height * 2.0)),
214+
rect_bin.translate(Vec2::new(stroke.width, height * 2.0 + offset * 2.0)),
210215
if max_power == 2 {
211216
round_top
212217
} else {
@@ -218,15 +223,15 @@ impl Time {
218223
if number == 3 {
219224
rect_bin.set_height(height * 2.0);
220225
painter.rect_filled(
221-
rect_bin.translate(Vec2::new(0.0, height * 2.0)),
226+
rect_bin.translate(Vec2::new(stroke.width, height * 2.0 + offset * 2.0)),
222227
round_bottom,
223228
color,
224229
);
225230
}
226231
if number == 4 || number == 5 {
227232
rect_bin.set_height(height);
228233
painter.rect_filled(
229-
rect_bin.translate(Vec2::new(0.0, height * 1.0)),
234+
rect_bin.translate(Vec2::new(stroke.width, height * 1.0 + offset * 2.0)),
230235
if max_power == 3 {
231236
round_top
232237
} else {
@@ -238,7 +243,7 @@ impl Time {
238243
if number == 6 {
239244
rect_bin.set_height(height * 2.0);
240245
painter.rect_filled(
241-
rect_bin.translate(Vec2::new(0.0, height * 1.0)),
246+
rect_bin.translate(Vec2::new(stroke.width, height * 1.0 + offset * 2.0)),
242247
if max_power == 3 {
243248
round_top
244249
} else {
@@ -250,7 +255,7 @@ impl Time {
250255
if number == 7 {
251256
rect_bin.set_height(height * 3.0);
252257
painter.rect_filled(
253-
rect_bin.translate(Vec2::new(0.0, height)),
258+
rect_bin.translate(Vec2::new(stroke.width, height + offset * 2.0)),
254259
if max_power == 3 {
255260
round_all
256261
} else {
@@ -261,7 +266,11 @@ impl Time {
261266
}
262267
if number == 8 || number == 9 {
263268
rect_bin.set_height(height);
264-
painter.rect_filled(rect_bin.translate(Vec2::new(0.0, 0.0)), round_top, color);
269+
painter.rect_filled(
270+
rect_bin.translate(Vec2::new(stroke.width, 0.0 + offset * 2.0)),
271+
round_top,
272+
color,
273+
);
265274
}
266275
}
267276
}

0 commit comments

Comments
 (0)