Skip to content

Commit 1789ac9

Browse files
committed
Fix issue with scrolling behavior in some cases
Gtk's documentation says to implement all of these methods. Less obviously, it turns out the behavior when one doesn't can be weird and inconsistent. This appears to fix the issue.
1 parent 83ec3b3 commit 1789ac9

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

src/keyboard_layer.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,11 @@ impl WidgetImpl for KeyboardLayerInner {
222222
(widget.narrow_width(), widget.wide_width())
223223
}
224224

225+
fn preferred_height(&self, widget: &Self::Type) -> (i32, i32) {
226+
let height = widget.narrow_height();
227+
(height, height)
228+
}
229+
225230
fn preferred_height_for_width(&self, widget: &Self::Type, width: i32) -> (i32, i32) {
226231
let height = if width < widget.wide_width() {
227232
widget.narrow_height()
@@ -230,6 +235,10 @@ impl WidgetImpl for KeyboardLayerInner {
230235
};
231236
(height, height)
232237
}
238+
239+
fn preferred_width_for_height(&self, widget: &Self::Type, _width: i32) -> (i32, i32) {
240+
self.preferred_width(widget)
241+
}
233242
}
234243

235244
impl DrawingAreaImpl for KeyboardLayerInner {}

src/main_window.rs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ pub struct MainWindowInner {
3636
load_revealer: DerefCell<gtk::Revealer>,
3737
picker: DerefCell<Picker>,
3838
stack: DerefCell<gtk::Stack>,
39-
keyboards: RefCell<Vec<(Keyboard, gtk::ListBoxRow)>>,
39+
keyboards: RefCell<Vec<(Keyboard, gtk::Box)>>,
4040
board_loading: RefCell<Option<Loader>>,
4141
board_list_stack: DerefCell<gtk::Stack>,
4242
}
@@ -127,8 +127,6 @@ impl ObjectImpl for MainWindowInner {
127127
let keyboard_box = cascade! {
128128
gtk::Box::new(gtk::Orientation::Vertical, 0);
129129
..set_halign(gtk::Align::Center);
130-
..connect_add(clone!(@weak board_list_stack => move |_, _| {
131-
}));
132130
};
133131
board_list_stack.add_named(&keyboard_box, "keyboards");
134132

@@ -320,18 +318,12 @@ impl MainWindow {
320318
KeyboardLayer::new(Page::Layer1, keyboard.board().clone());
321319
..set_halign(gtk::Align::Center);
322320
};
323-
let keyboard_box = cascade! {
321+
let row = cascade! {
324322
gtk::Box::new(gtk::Orientation::Vertical, 12);
323+
..set_margin(12);
325324
..add(&label);
326325
..add(&keyboard_layer);
327326
..add(&button);
328-
};
329-
let row = cascade! {
330-
gtk::ListBoxRow::new();
331-
..set_activatable(false);
332-
..set_selectable(false);
333-
..add(&keyboard_box);
334-
..set_margin(12);
335327
..show_all();
336328
};
337329
self.inner().keyboard_box.add(&row);
@@ -346,7 +338,7 @@ impl MainWindow {
346338
}));
347339
..show();
348340
};
349-
keyboard_box.add(&label);
341+
row.add(&label);
350342
}
351343

352344
self.inner().stack.add(&keyboard);

0 commit comments

Comments
 (0)