1 // This file was generated by gir (https://github.com/gtk-rs/gir)
2 // from gir-files (https://github.com/gtk-rs/gir-files)
3 // DO NOT EDIT
4 
5 use gdk;
6 #[cfg(any(feature = "v3_16", feature = "dox"))]
7 use gio;
8 use glib;
9 use glib::object::Cast;
10 use glib::object::IsA;
11 use glib::object::ObjectExt;
12 use glib::signal::connect_raw;
13 use glib::signal::SignalHandlerId;
14 use glib::translate::*;
15 use glib::StaticType;
16 use glib::ToValue;
17 use glib_sys;
18 use gobject_sys;
19 use gtk_sys;
20 use libc;
21 use std::boxed::Box as Box_;
22 use std::fmt;
23 use std::mem::transmute;
24 use Adjustment;
25 use Align;
26 use Buildable;
27 use Container;
28 use ListBoxRow;
29 use MovementStep;
30 use ResizeMode;
31 use SelectionMode;
32 use Widget;
33 
34 glib_wrapper! {
35     pub struct ListBox(Object<gtk_sys::GtkListBox, gtk_sys::GtkListBoxClass, ListBoxClass>) @extends Container, Widget, @implements Buildable;
36 
37     match fn {
38         get_type => || gtk_sys::gtk_list_box_get_type(),
39     }
40 }
41 
42 impl ListBox {
new() -> ListBox43     pub fn new() -> ListBox {
44         assert_initialized_main_thread!();
45         unsafe { Widget::from_glib_none(gtk_sys::gtk_list_box_new()).unsafe_cast() }
46     }
47 }
48 
49 impl Default for ListBox {
default() -> Self50     fn default() -> Self {
51         Self::new()
52     }
53 }
54 
55 pub struct ListBoxBuilder {
56     activate_on_single_click: Option<bool>,
57     selection_mode: Option<SelectionMode>,
58     border_width: Option<u32>,
59     child: Option<Widget>,
60     resize_mode: Option<ResizeMode>,
61     app_paintable: Option<bool>,
62     can_default: Option<bool>,
63     can_focus: Option<bool>,
64     events: Option<gdk::EventMask>,
65     expand: Option<bool>,
66     #[cfg(any(feature = "v3_20", feature = "dox"))]
67     focus_on_click: Option<bool>,
68     halign: Option<Align>,
69     has_default: Option<bool>,
70     has_focus: Option<bool>,
71     has_tooltip: Option<bool>,
72     height_request: Option<i32>,
73     hexpand: Option<bool>,
74     hexpand_set: Option<bool>,
75     is_focus: Option<bool>,
76     margin: Option<i32>,
77     margin_bottom: Option<i32>,
78     margin_end: Option<i32>,
79     margin_start: Option<i32>,
80     margin_top: Option<i32>,
81     name: Option<String>,
82     no_show_all: Option<bool>,
83     opacity: Option<f64>,
84     parent: Option<Container>,
85     receives_default: Option<bool>,
86     sensitive: Option<bool>,
87     //style: /*Unknown type*/,
88     tooltip_markup: Option<String>,
89     tooltip_text: Option<String>,
90     valign: Option<Align>,
91     vexpand: Option<bool>,
92     vexpand_set: Option<bool>,
93     visible: Option<bool>,
94     width_request: Option<i32>,
95 }
96 
97 impl ListBoxBuilder {
new() -> Self98     pub fn new() -> Self {
99         Self {
100             activate_on_single_click: None,
101             selection_mode: None,
102             border_width: None,
103             child: None,
104             resize_mode: None,
105             app_paintable: None,
106             can_default: None,
107             can_focus: None,
108             events: None,
109             expand: None,
110             #[cfg(any(feature = "v3_20", feature = "dox"))]
111             focus_on_click: None,
112             halign: None,
113             has_default: None,
114             has_focus: None,
115             has_tooltip: None,
116             height_request: None,
117             hexpand: None,
118             hexpand_set: None,
119             is_focus: None,
120             margin: None,
121             margin_bottom: None,
122             margin_end: None,
123             margin_start: None,
124             margin_top: None,
125             name: None,
126             no_show_all: None,
127             opacity: None,
128             parent: None,
129             receives_default: None,
130             sensitive: None,
131             tooltip_markup: None,
132             tooltip_text: None,
133             valign: None,
134             vexpand: None,
135             vexpand_set: None,
136             visible: None,
137             width_request: None,
138         }
139     }
140 
build(self) -> ListBox141     pub fn build(self) -> ListBox {
142         let mut properties: Vec<(&str, &dyn ToValue)> = vec![];
143         if let Some(ref activate_on_single_click) = self.activate_on_single_click {
144             properties.push(("activate-on-single-click", activate_on_single_click));
145         }
146         if let Some(ref selection_mode) = self.selection_mode {
147             properties.push(("selection-mode", selection_mode));
148         }
149         if let Some(ref border_width) = self.border_width {
150             properties.push(("border-width", border_width));
151         }
152         if let Some(ref child) = self.child {
153             properties.push(("child", child));
154         }
155         if let Some(ref resize_mode) = self.resize_mode {
156             properties.push(("resize-mode", resize_mode));
157         }
158         if let Some(ref app_paintable) = self.app_paintable {
159             properties.push(("app-paintable", app_paintable));
160         }
161         if let Some(ref can_default) = self.can_default {
162             properties.push(("can-default", can_default));
163         }
164         if let Some(ref can_focus) = self.can_focus {
165             properties.push(("can-focus", can_focus));
166         }
167         if let Some(ref events) = self.events {
168             properties.push(("events", events));
169         }
170         if let Some(ref expand) = self.expand {
171             properties.push(("expand", expand));
172         }
173         #[cfg(any(feature = "v3_20", feature = "dox"))]
174         {
175             if let Some(ref focus_on_click) = self.focus_on_click {
176                 properties.push(("focus-on-click", focus_on_click));
177             }
178         }
179         if let Some(ref halign) = self.halign {
180             properties.push(("halign", halign));
181         }
182         if let Some(ref has_default) = self.has_default {
183             properties.push(("has-default", has_default));
184         }
185         if let Some(ref has_focus) = self.has_focus {
186             properties.push(("has-focus", has_focus));
187         }
188         if let Some(ref has_tooltip) = self.has_tooltip {
189             properties.push(("has-tooltip", has_tooltip));
190         }
191         if let Some(ref height_request) = self.height_request {
192             properties.push(("height-request", height_request));
193         }
194         if let Some(ref hexpand) = self.hexpand {
195             properties.push(("hexpand", hexpand));
196         }
197         if let Some(ref hexpand_set) = self.hexpand_set {
198             properties.push(("hexpand-set", hexpand_set));
199         }
200         if let Some(ref is_focus) = self.is_focus {
201             properties.push(("is-focus", is_focus));
202         }
203         if let Some(ref margin) = self.margin {
204             properties.push(("margin", margin));
205         }
206         if let Some(ref margin_bottom) = self.margin_bottom {
207             properties.push(("margin-bottom", margin_bottom));
208         }
209         if let Some(ref margin_end) = self.margin_end {
210             properties.push(("margin-end", margin_end));
211         }
212         if let Some(ref margin_start) = self.margin_start {
213             properties.push(("margin-start", margin_start));
214         }
215         if let Some(ref margin_top) = self.margin_top {
216             properties.push(("margin-top", margin_top));
217         }
218         if let Some(ref name) = self.name {
219             properties.push(("name", name));
220         }
221         if let Some(ref no_show_all) = self.no_show_all {
222             properties.push(("no-show-all", no_show_all));
223         }
224         if let Some(ref opacity) = self.opacity {
225             properties.push(("opacity", opacity));
226         }
227         if let Some(ref parent) = self.parent {
228             properties.push(("parent", parent));
229         }
230         if let Some(ref receives_default) = self.receives_default {
231             properties.push(("receives-default", receives_default));
232         }
233         if let Some(ref sensitive) = self.sensitive {
234             properties.push(("sensitive", sensitive));
235         }
236         if let Some(ref tooltip_markup) = self.tooltip_markup {
237             properties.push(("tooltip-markup", tooltip_markup));
238         }
239         if let Some(ref tooltip_text) = self.tooltip_text {
240             properties.push(("tooltip-text", tooltip_text));
241         }
242         if let Some(ref valign) = self.valign {
243             properties.push(("valign", valign));
244         }
245         if let Some(ref vexpand) = self.vexpand {
246             properties.push(("vexpand", vexpand));
247         }
248         if let Some(ref vexpand_set) = self.vexpand_set {
249             properties.push(("vexpand-set", vexpand_set));
250         }
251         if let Some(ref visible) = self.visible {
252             properties.push(("visible", visible));
253         }
254         if let Some(ref width_request) = self.width_request {
255             properties.push(("width-request", width_request));
256         }
257         glib::Object::new(ListBox::static_type(), &properties)
258             .expect("object new")
259             .downcast()
260             .expect("downcast")
261     }
262 
activate_on_single_click(mut self, activate_on_single_click: bool) -> Self263     pub fn activate_on_single_click(mut self, activate_on_single_click: bool) -> Self {
264         self.activate_on_single_click = Some(activate_on_single_click);
265         self
266     }
267 
selection_mode(mut self, selection_mode: SelectionMode) -> Self268     pub fn selection_mode(mut self, selection_mode: SelectionMode) -> Self {
269         self.selection_mode = Some(selection_mode);
270         self
271     }
272 
border_width(mut self, border_width: u32) -> Self273     pub fn border_width(mut self, border_width: u32) -> Self {
274         self.border_width = Some(border_width);
275         self
276     }
277 
child(mut self, child: &Widget) -> Self278     pub fn child(mut self, child: &Widget) -> Self {
279         self.child = Some(child.clone());
280         self
281     }
282 
resize_mode(mut self, resize_mode: ResizeMode) -> Self283     pub fn resize_mode(mut self, resize_mode: ResizeMode) -> Self {
284         self.resize_mode = Some(resize_mode);
285         self
286     }
287 
app_paintable(mut self, app_paintable: bool) -> Self288     pub fn app_paintable(mut self, app_paintable: bool) -> Self {
289         self.app_paintable = Some(app_paintable);
290         self
291     }
292 
can_default(mut self, can_default: bool) -> Self293     pub fn can_default(mut self, can_default: bool) -> Self {
294         self.can_default = Some(can_default);
295         self
296     }
297 
can_focus(mut self, can_focus: bool) -> Self298     pub fn can_focus(mut self, can_focus: bool) -> Self {
299         self.can_focus = Some(can_focus);
300         self
301     }
302 
events(mut self, events: gdk::EventMask) -> Self303     pub fn events(mut self, events: gdk::EventMask) -> Self {
304         self.events = Some(events);
305         self
306     }
307 
expand(mut self, expand: bool) -> Self308     pub fn expand(mut self, expand: bool) -> Self {
309         self.expand = Some(expand);
310         self
311     }
312 
313     #[cfg(any(feature = "v3_20", feature = "dox"))]
focus_on_click(mut self, focus_on_click: bool) -> Self314     pub fn focus_on_click(mut self, focus_on_click: bool) -> Self {
315         self.focus_on_click = Some(focus_on_click);
316         self
317     }
318 
halign(mut self, halign: Align) -> Self319     pub fn halign(mut self, halign: Align) -> Self {
320         self.halign = Some(halign);
321         self
322     }
323 
has_default(mut self, has_default: bool) -> Self324     pub fn has_default(mut self, has_default: bool) -> Self {
325         self.has_default = Some(has_default);
326         self
327     }
328 
has_focus(mut self, has_focus: bool) -> Self329     pub fn has_focus(mut self, has_focus: bool) -> Self {
330         self.has_focus = Some(has_focus);
331         self
332     }
333 
has_tooltip(mut self, has_tooltip: bool) -> Self334     pub fn has_tooltip(mut self, has_tooltip: bool) -> Self {
335         self.has_tooltip = Some(has_tooltip);
336         self
337     }
338 
height_request(mut self, height_request: i32) -> Self339     pub fn height_request(mut self, height_request: i32) -> Self {
340         self.height_request = Some(height_request);
341         self
342     }
343 
hexpand(mut self, hexpand: bool) -> Self344     pub fn hexpand(mut self, hexpand: bool) -> Self {
345         self.hexpand = Some(hexpand);
346         self
347     }
348 
hexpand_set(mut self, hexpand_set: bool) -> Self349     pub fn hexpand_set(mut self, hexpand_set: bool) -> Self {
350         self.hexpand_set = Some(hexpand_set);
351         self
352     }
353 
is_focus(mut self, is_focus: bool) -> Self354     pub fn is_focus(mut self, is_focus: bool) -> Self {
355         self.is_focus = Some(is_focus);
356         self
357     }
358 
margin(mut self, margin: i32) -> Self359     pub fn margin(mut self, margin: i32) -> Self {
360         self.margin = Some(margin);
361         self
362     }
363 
margin_bottom(mut self, margin_bottom: i32) -> Self364     pub fn margin_bottom(mut self, margin_bottom: i32) -> Self {
365         self.margin_bottom = Some(margin_bottom);
366         self
367     }
368 
margin_end(mut self, margin_end: i32) -> Self369     pub fn margin_end(mut self, margin_end: i32) -> Self {
370         self.margin_end = Some(margin_end);
371         self
372     }
373 
margin_start(mut self, margin_start: i32) -> Self374     pub fn margin_start(mut self, margin_start: i32) -> Self {
375         self.margin_start = Some(margin_start);
376         self
377     }
378 
margin_top(mut self, margin_top: i32) -> Self379     pub fn margin_top(mut self, margin_top: i32) -> Self {
380         self.margin_top = Some(margin_top);
381         self
382     }
383 
name(mut self, name: &str) -> Self384     pub fn name(mut self, name: &str) -> Self {
385         self.name = Some(name.to_string());
386         self
387     }
388 
no_show_all(mut self, no_show_all: bool) -> Self389     pub fn no_show_all(mut self, no_show_all: bool) -> Self {
390         self.no_show_all = Some(no_show_all);
391         self
392     }
393 
opacity(mut self, opacity: f64) -> Self394     pub fn opacity(mut self, opacity: f64) -> Self {
395         self.opacity = Some(opacity);
396         self
397     }
398 
parent(mut self, parent: &Container) -> Self399     pub fn parent(mut self, parent: &Container) -> Self {
400         self.parent = Some(parent.clone());
401         self
402     }
403 
receives_default(mut self, receives_default: bool) -> Self404     pub fn receives_default(mut self, receives_default: bool) -> Self {
405         self.receives_default = Some(receives_default);
406         self
407     }
408 
sensitive(mut self, sensitive: bool) -> Self409     pub fn sensitive(mut self, sensitive: bool) -> Self {
410         self.sensitive = Some(sensitive);
411         self
412     }
413 
tooltip_markup(mut self, tooltip_markup: &str) -> Self414     pub fn tooltip_markup(mut self, tooltip_markup: &str) -> Self {
415         self.tooltip_markup = Some(tooltip_markup.to_string());
416         self
417     }
418 
tooltip_text(mut self, tooltip_text: &str) -> Self419     pub fn tooltip_text(mut self, tooltip_text: &str) -> Self {
420         self.tooltip_text = Some(tooltip_text.to_string());
421         self
422     }
423 
valign(mut self, valign: Align) -> Self424     pub fn valign(mut self, valign: Align) -> Self {
425         self.valign = Some(valign);
426         self
427     }
428 
vexpand(mut self, vexpand: bool) -> Self429     pub fn vexpand(mut self, vexpand: bool) -> Self {
430         self.vexpand = Some(vexpand);
431         self
432     }
433 
vexpand_set(mut self, vexpand_set: bool) -> Self434     pub fn vexpand_set(mut self, vexpand_set: bool) -> Self {
435         self.vexpand_set = Some(vexpand_set);
436         self
437     }
438 
visible(mut self, visible: bool) -> Self439     pub fn visible(mut self, visible: bool) -> Self {
440         self.visible = Some(visible);
441         self
442     }
443 
width_request(mut self, width_request: i32) -> Self444     pub fn width_request(mut self, width_request: i32) -> Self {
445         self.width_request = Some(width_request);
446         self
447     }
448 }
449 
450 pub const NONE_LIST_BOX: Option<&ListBox> = None;
451 
452 pub trait ListBoxExt: 'static {
453     #[cfg(any(feature = "v3_16", feature = "dox"))]
bind_model<P: IsA<gio::ListModel>, Q: Fn(&glib::Object) -> Widget + 'static>( &self, model: Option<&P>, create_widget_func: Q, )454     fn bind_model<P: IsA<gio::ListModel>, Q: Fn(&glib::Object) -> Widget + 'static>(
455         &self,
456         model: Option<&P>,
457         create_widget_func: Q,
458     );
459 
drag_highlight_row<P: IsA<ListBoxRow>>(&self, row: &P)460     fn drag_highlight_row<P: IsA<ListBoxRow>>(&self, row: &P);
461 
drag_unhighlight_row(&self)462     fn drag_unhighlight_row(&self);
463 
get_activate_on_single_click(&self) -> bool464     fn get_activate_on_single_click(&self) -> bool;
465 
get_adjustment(&self) -> Option<Adjustment>466     fn get_adjustment(&self) -> Option<Adjustment>;
467 
get_row_at_index(&self, index_: i32) -> Option<ListBoxRow>468     fn get_row_at_index(&self, index_: i32) -> Option<ListBoxRow>;
469 
get_row_at_y(&self, y: i32) -> Option<ListBoxRow>470     fn get_row_at_y(&self, y: i32) -> Option<ListBoxRow>;
471 
get_selected_row(&self) -> Option<ListBoxRow>472     fn get_selected_row(&self) -> Option<ListBoxRow>;
473 
get_selected_rows(&self) -> Vec<ListBoxRow>474     fn get_selected_rows(&self) -> Vec<ListBoxRow>;
475 
get_selection_mode(&self) -> SelectionMode476     fn get_selection_mode(&self) -> SelectionMode;
477 
insert<P: IsA<Widget>>(&self, child: &P, position: i32)478     fn insert<P: IsA<Widget>>(&self, child: &P, position: i32);
479 
invalidate_filter(&self)480     fn invalidate_filter(&self);
481 
invalidate_headers(&self)482     fn invalidate_headers(&self);
483 
invalidate_sort(&self)484     fn invalidate_sort(&self);
485 
prepend<P: IsA<Widget>>(&self, child: &P)486     fn prepend<P: IsA<Widget>>(&self, child: &P);
487 
select_all(&self)488     fn select_all(&self);
489 
select_row<P: IsA<ListBoxRow>>(&self, row: Option<&P>)490     fn select_row<P: IsA<ListBoxRow>>(&self, row: Option<&P>);
491 
selected_foreach<P: FnMut(&ListBox, &ListBoxRow)>(&self, func: P)492     fn selected_foreach<P: FnMut(&ListBox, &ListBoxRow)>(&self, func: P);
493 
set_activate_on_single_click(&self, single: bool)494     fn set_activate_on_single_click(&self, single: bool);
495 
set_adjustment<P: IsA<Adjustment>>(&self, adjustment: Option<&P>)496     fn set_adjustment<P: IsA<Adjustment>>(&self, adjustment: Option<&P>);
497 
set_filter_func(&self, filter_func: Option<Box<dyn Fn(&ListBoxRow) -> bool + 'static>>)498     fn set_filter_func(&self, filter_func: Option<Box<dyn Fn(&ListBoxRow) -> bool + 'static>>);
499 
set_header_func( &self, update_header: Option<Box<dyn Fn(&ListBoxRow, Option<&ListBoxRow>) + 'static>>, )500     fn set_header_func(
501         &self,
502         update_header: Option<Box<dyn Fn(&ListBoxRow, Option<&ListBoxRow>) + 'static>>,
503     );
504 
set_placeholder<P: IsA<Widget>>(&self, placeholder: Option<&P>)505     fn set_placeholder<P: IsA<Widget>>(&self, placeholder: Option<&P>);
506 
set_selection_mode(&self, mode: SelectionMode)507     fn set_selection_mode(&self, mode: SelectionMode);
508 
set_sort_func( &self, sort_func: Option<Box<dyn Fn(&ListBoxRow, &ListBoxRow) -> i32 + 'static>>, )509     fn set_sort_func(
510         &self,
511         sort_func: Option<Box<dyn Fn(&ListBoxRow, &ListBoxRow) -> i32 + 'static>>,
512     );
513 
unselect_all(&self)514     fn unselect_all(&self);
515 
unselect_row<P: IsA<ListBoxRow>>(&self, row: &P)516     fn unselect_row<P: IsA<ListBoxRow>>(&self, row: &P);
517 
connect_activate_cursor_row<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId518     fn connect_activate_cursor_row<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
519 
emit_activate_cursor_row(&self)520     fn emit_activate_cursor_row(&self);
521 
connect_move_cursor<F: Fn(&Self, MovementStep, i32) + 'static>( &self, f: F, ) -> SignalHandlerId522     fn connect_move_cursor<F: Fn(&Self, MovementStep, i32) + 'static>(
523         &self,
524         f: F,
525     ) -> SignalHandlerId;
526 
emit_move_cursor(&self, object: MovementStep, p0: i32)527     fn emit_move_cursor(&self, object: MovementStep, p0: i32);
528 
connect_row_activated<F: Fn(&Self, &ListBoxRow) + 'static>(&self, f: F) -> SignalHandlerId529     fn connect_row_activated<F: Fn(&Self, &ListBoxRow) + 'static>(&self, f: F) -> SignalHandlerId;
530 
connect_row_selected<F: Fn(&Self, Option<&ListBoxRow>) + 'static>( &self, f: F, ) -> SignalHandlerId531     fn connect_row_selected<F: Fn(&Self, Option<&ListBoxRow>) + 'static>(
532         &self,
533         f: F,
534     ) -> SignalHandlerId;
535 
connect_select_all<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId536     fn connect_select_all<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
537 
emit_select_all(&self)538     fn emit_select_all(&self);
539 
connect_selected_rows_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId540     fn connect_selected_rows_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
541 
connect_toggle_cursor_row<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId542     fn connect_toggle_cursor_row<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
543 
emit_toggle_cursor_row(&self)544     fn emit_toggle_cursor_row(&self);
545 
connect_unselect_all<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId546     fn connect_unselect_all<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
547 
emit_unselect_all(&self)548     fn emit_unselect_all(&self);
549 
connect_property_activate_on_single_click_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId550     fn connect_property_activate_on_single_click_notify<F: Fn(&Self) + 'static>(
551         &self,
552         f: F,
553     ) -> SignalHandlerId;
554 
connect_property_selection_mode_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId555     fn connect_property_selection_mode_notify<F: Fn(&Self) + 'static>(
556         &self,
557         f: F,
558     ) -> SignalHandlerId;
559 }
560 
561 impl<O: IsA<ListBox>> ListBoxExt for O {
562     #[cfg(any(feature = "v3_16", feature = "dox"))]
bind_model<P: IsA<gio::ListModel>, Q: Fn(&glib::Object) -> Widget + 'static>( &self, model: Option<&P>, create_widget_func: Q, )563     fn bind_model<P: IsA<gio::ListModel>, Q: Fn(&glib::Object) -> Widget + 'static>(
564         &self,
565         model: Option<&P>,
566         create_widget_func: Q,
567     ) {
568         let create_widget_func_data: Box_<Q> = Box::new(create_widget_func);
569         unsafe extern "C" fn create_widget_func_func<
570             P: IsA<gio::ListModel>,
571             Q: Fn(&glib::Object) -> Widget + 'static,
572         >(
573             item: *mut gobject_sys::GObject,
574             user_data: glib_sys::gpointer,
575         ) -> *mut gtk_sys::GtkWidget {
576             let item = from_glib_borrow(item);
577             let callback: &Q = &*(user_data as *mut _);
578             let res = (*callback)(&item);
579             res.to_glib_full()
580         }
581         let create_widget_func = Some(create_widget_func_func::<P, Q> as _);
582         unsafe extern "C" fn user_data_free_func_func<
583             P: IsA<gio::ListModel>,
584             Q: Fn(&glib::Object) -> Widget + 'static,
585         >(
586             data: glib_sys::gpointer,
587         ) {
588             let _callback: Box_<Q> = Box_::from_raw(data as *mut _);
589         }
590         let destroy_call4 = Some(user_data_free_func_func::<P, Q> as _);
591         let super_callback0: Box_<Q> = create_widget_func_data;
592         unsafe {
593             gtk_sys::gtk_list_box_bind_model(
594                 self.as_ref().to_glib_none().0,
595                 model.map(|p| p.as_ref()).to_glib_none().0,
596                 create_widget_func,
597                 Box::into_raw(super_callback0) as *mut _,
598                 destroy_call4,
599             );
600         }
601     }
602 
drag_highlight_row<P: IsA<ListBoxRow>>(&self, row: &P)603     fn drag_highlight_row<P: IsA<ListBoxRow>>(&self, row: &P) {
604         unsafe {
605             gtk_sys::gtk_list_box_drag_highlight_row(
606                 self.as_ref().to_glib_none().0,
607                 row.as_ref().to_glib_none().0,
608             );
609         }
610     }
611 
drag_unhighlight_row(&self)612     fn drag_unhighlight_row(&self) {
613         unsafe {
614             gtk_sys::gtk_list_box_drag_unhighlight_row(self.as_ref().to_glib_none().0);
615         }
616     }
617 
get_activate_on_single_click(&self) -> bool618     fn get_activate_on_single_click(&self) -> bool {
619         unsafe {
620             from_glib(gtk_sys::gtk_list_box_get_activate_on_single_click(
621                 self.as_ref().to_glib_none().0,
622             ))
623         }
624     }
625 
get_adjustment(&self) -> Option<Adjustment>626     fn get_adjustment(&self) -> Option<Adjustment> {
627         unsafe {
628             from_glib_none(gtk_sys::gtk_list_box_get_adjustment(
629                 self.as_ref().to_glib_none().0,
630             ))
631         }
632     }
633 
get_row_at_index(&self, index_: i32) -> Option<ListBoxRow>634     fn get_row_at_index(&self, index_: i32) -> Option<ListBoxRow> {
635         unsafe {
636             from_glib_none(gtk_sys::gtk_list_box_get_row_at_index(
637                 self.as_ref().to_glib_none().0,
638                 index_,
639             ))
640         }
641     }
642 
get_row_at_y(&self, y: i32) -> Option<ListBoxRow>643     fn get_row_at_y(&self, y: i32) -> Option<ListBoxRow> {
644         unsafe {
645             from_glib_none(gtk_sys::gtk_list_box_get_row_at_y(
646                 self.as_ref().to_glib_none().0,
647                 y,
648             ))
649         }
650     }
651 
get_selected_row(&self) -> Option<ListBoxRow>652     fn get_selected_row(&self) -> Option<ListBoxRow> {
653         unsafe {
654             from_glib_none(gtk_sys::gtk_list_box_get_selected_row(
655                 self.as_ref().to_glib_none().0,
656             ))
657         }
658     }
659 
get_selected_rows(&self) -> Vec<ListBoxRow>660     fn get_selected_rows(&self) -> Vec<ListBoxRow> {
661         unsafe {
662             FromGlibPtrContainer::from_glib_container(gtk_sys::gtk_list_box_get_selected_rows(
663                 self.as_ref().to_glib_none().0,
664             ))
665         }
666     }
667 
get_selection_mode(&self) -> SelectionMode668     fn get_selection_mode(&self) -> SelectionMode {
669         unsafe {
670             from_glib(gtk_sys::gtk_list_box_get_selection_mode(
671                 self.as_ref().to_glib_none().0,
672             ))
673         }
674     }
675 
insert<P: IsA<Widget>>(&self, child: &P, position: i32)676     fn insert<P: IsA<Widget>>(&self, child: &P, position: i32) {
677         unsafe {
678             gtk_sys::gtk_list_box_insert(
679                 self.as_ref().to_glib_none().0,
680                 child.as_ref().to_glib_none().0,
681                 position,
682             );
683         }
684     }
685 
invalidate_filter(&self)686     fn invalidate_filter(&self) {
687         unsafe {
688             gtk_sys::gtk_list_box_invalidate_filter(self.as_ref().to_glib_none().0);
689         }
690     }
691 
invalidate_headers(&self)692     fn invalidate_headers(&self) {
693         unsafe {
694             gtk_sys::gtk_list_box_invalidate_headers(self.as_ref().to_glib_none().0);
695         }
696     }
697 
invalidate_sort(&self)698     fn invalidate_sort(&self) {
699         unsafe {
700             gtk_sys::gtk_list_box_invalidate_sort(self.as_ref().to_glib_none().0);
701         }
702     }
703 
prepend<P: IsA<Widget>>(&self, child: &P)704     fn prepend<P: IsA<Widget>>(&self, child: &P) {
705         unsafe {
706             gtk_sys::gtk_list_box_prepend(
707                 self.as_ref().to_glib_none().0,
708                 child.as_ref().to_glib_none().0,
709             );
710         }
711     }
712 
select_all(&self)713     fn select_all(&self) {
714         unsafe {
715             gtk_sys::gtk_list_box_select_all(self.as_ref().to_glib_none().0);
716         }
717     }
718 
select_row<P: IsA<ListBoxRow>>(&self, row: Option<&P>)719     fn select_row<P: IsA<ListBoxRow>>(&self, row: Option<&P>) {
720         unsafe {
721             gtk_sys::gtk_list_box_select_row(
722                 self.as_ref().to_glib_none().0,
723                 row.map(|p| p.as_ref()).to_glib_none().0,
724             );
725         }
726     }
727 
selected_foreach<P: FnMut(&ListBox, &ListBoxRow)>(&self, func: P)728     fn selected_foreach<P: FnMut(&ListBox, &ListBoxRow)>(&self, func: P) {
729         let func_data: P = func;
730         unsafe extern "C" fn func_func<P: FnMut(&ListBox, &ListBoxRow)>(
731             box_: *mut gtk_sys::GtkListBox,
732             row: *mut gtk_sys::GtkListBoxRow,
733             user_data: glib_sys::gpointer,
734         ) {
735             let box_ = from_glib_borrow(box_);
736             let row = from_glib_borrow(row);
737             let callback: *mut P = user_data as *const _ as usize as *mut P;
738             (*callback)(&box_, &row);
739         }
740         let func = Some(func_func::<P> as _);
741         let super_callback0: &P = &func_data;
742         unsafe {
743             gtk_sys::gtk_list_box_selected_foreach(
744                 self.as_ref().to_glib_none().0,
745                 func,
746                 super_callback0 as *const _ as usize as *mut _,
747             );
748         }
749     }
750 
set_activate_on_single_click(&self, single: bool)751     fn set_activate_on_single_click(&self, single: bool) {
752         unsafe {
753             gtk_sys::gtk_list_box_set_activate_on_single_click(
754                 self.as_ref().to_glib_none().0,
755                 single.to_glib(),
756             );
757         }
758     }
759 
set_adjustment<P: IsA<Adjustment>>(&self, adjustment: Option<&P>)760     fn set_adjustment<P: IsA<Adjustment>>(&self, adjustment: Option<&P>) {
761         unsafe {
762             gtk_sys::gtk_list_box_set_adjustment(
763                 self.as_ref().to_glib_none().0,
764                 adjustment.map(|p| p.as_ref()).to_glib_none().0,
765             );
766         }
767     }
768 
set_filter_func(&self, filter_func: Option<Box<dyn Fn(&ListBoxRow) -> bool + 'static>>)769     fn set_filter_func(&self, filter_func: Option<Box<dyn Fn(&ListBoxRow) -> bool + 'static>>) {
770         let filter_func_data: Box_<Option<Box<dyn Fn(&ListBoxRow) -> bool + 'static>>> =
771             Box::new(filter_func);
772         unsafe extern "C" fn filter_func_func(
773             row: *mut gtk_sys::GtkListBoxRow,
774             user_data: glib_sys::gpointer,
775         ) -> glib_sys::gboolean {
776             let row = from_glib_borrow(row);
777             let callback: &Option<Box<dyn Fn(&ListBoxRow) -> bool + 'static>> =
778                 &*(user_data as *mut _);
779             let res = if let Some(ref callback) = *callback {
780                 callback(&row)
781             } else {
782                 panic!("cannot get closure...")
783             };
784             res.to_glib()
785         }
786         let filter_func = if filter_func_data.is_some() {
787             Some(filter_func_func as _)
788         } else {
789             None
790         };
791         unsafe extern "C" fn destroy_func(data: glib_sys::gpointer) {
792             let _callback: Box_<Option<Box<dyn Fn(&ListBoxRow) -> bool + 'static>>> =
793                 Box_::from_raw(data as *mut _);
794         }
795         let destroy_call3 = Some(destroy_func as _);
796         let super_callback0: Box_<Option<Box<dyn Fn(&ListBoxRow) -> bool + 'static>>> =
797             filter_func_data;
798         unsafe {
799             gtk_sys::gtk_list_box_set_filter_func(
800                 self.as_ref().to_glib_none().0,
801                 filter_func,
802                 Box::into_raw(super_callback0) as *mut _,
803                 destroy_call3,
804             );
805         }
806     }
807 
set_header_func( &self, update_header: Option<Box<dyn Fn(&ListBoxRow, Option<&ListBoxRow>) + 'static>>, )808     fn set_header_func(
809         &self,
810         update_header: Option<Box<dyn Fn(&ListBoxRow, Option<&ListBoxRow>) + 'static>>,
811     ) {
812         let update_header_data: Box_<
813             Option<Box<dyn Fn(&ListBoxRow, Option<&ListBoxRow>) + 'static>>,
814         > = Box::new(update_header);
815         unsafe extern "C" fn update_header_func(
816             row: *mut gtk_sys::GtkListBoxRow,
817             before: *mut gtk_sys::GtkListBoxRow,
818             user_data: glib_sys::gpointer,
819         ) {
820             let row = from_glib_borrow(row);
821             let before: Option<ListBoxRow> = from_glib_borrow(before);
822             let callback: &Option<Box<dyn Fn(&ListBoxRow, Option<&ListBoxRow>) + 'static>> =
823                 &*(user_data as *mut _);
824             if let Some(ref callback) = *callback {
825                 callback(&row, before.as_ref())
826             } else {
827                 panic!("cannot get closure...")
828             };
829         }
830         let update_header = if update_header_data.is_some() {
831             Some(update_header_func as _)
832         } else {
833             None
834         };
835         unsafe extern "C" fn destroy_func(data: glib_sys::gpointer) {
836             let _callback: Box_<Option<Box<dyn Fn(&ListBoxRow, Option<&ListBoxRow>) + 'static>>> =
837                 Box_::from_raw(data as *mut _);
838         }
839         let destroy_call3 = Some(destroy_func as _);
840         let super_callback0: Box_<Option<Box<dyn Fn(&ListBoxRow, Option<&ListBoxRow>) + 'static>>> =
841             update_header_data;
842         unsafe {
843             gtk_sys::gtk_list_box_set_header_func(
844                 self.as_ref().to_glib_none().0,
845                 update_header,
846                 Box::into_raw(super_callback0) as *mut _,
847                 destroy_call3,
848             );
849         }
850     }
851 
set_placeholder<P: IsA<Widget>>(&self, placeholder: Option<&P>)852     fn set_placeholder<P: IsA<Widget>>(&self, placeholder: Option<&P>) {
853         unsafe {
854             gtk_sys::gtk_list_box_set_placeholder(
855                 self.as_ref().to_glib_none().0,
856                 placeholder.map(|p| p.as_ref()).to_glib_none().0,
857             );
858         }
859     }
860 
set_selection_mode(&self, mode: SelectionMode)861     fn set_selection_mode(&self, mode: SelectionMode) {
862         unsafe {
863             gtk_sys::gtk_list_box_set_selection_mode(
864                 self.as_ref().to_glib_none().0,
865                 mode.to_glib(),
866             );
867         }
868     }
869 
set_sort_func( &self, sort_func: Option<Box<dyn Fn(&ListBoxRow, &ListBoxRow) -> i32 + 'static>>, )870     fn set_sort_func(
871         &self,
872         sort_func: Option<Box<dyn Fn(&ListBoxRow, &ListBoxRow) -> i32 + 'static>>,
873     ) {
874         let sort_func_data: Box_<Option<Box<dyn Fn(&ListBoxRow, &ListBoxRow) -> i32 + 'static>>> =
875             Box::new(sort_func);
876         unsafe extern "C" fn sort_func_func(
877             row1: *mut gtk_sys::GtkListBoxRow,
878             row2: *mut gtk_sys::GtkListBoxRow,
879             user_data: glib_sys::gpointer,
880         ) -> libc::c_int {
881             let row1 = from_glib_borrow(row1);
882             let row2 = from_glib_borrow(row2);
883             let callback: &Option<Box<dyn Fn(&ListBoxRow, &ListBoxRow) -> i32 + 'static>> =
884                 &*(user_data as *mut _);
885             let res = if let Some(ref callback) = *callback {
886                 callback(&row1, &row2)
887             } else {
888                 panic!("cannot get closure...")
889             };
890             res
891         }
892         let sort_func = if sort_func_data.is_some() {
893             Some(sort_func_func as _)
894         } else {
895             None
896         };
897         unsafe extern "C" fn destroy_func(data: glib_sys::gpointer) {
898             let _callback: Box_<Option<Box<dyn Fn(&ListBoxRow, &ListBoxRow) -> i32 + 'static>>> =
899                 Box_::from_raw(data as *mut _);
900         }
901         let destroy_call3 = Some(destroy_func as _);
902         let super_callback0: Box_<Option<Box<dyn Fn(&ListBoxRow, &ListBoxRow) -> i32 + 'static>>> =
903             sort_func_data;
904         unsafe {
905             gtk_sys::gtk_list_box_set_sort_func(
906                 self.as_ref().to_glib_none().0,
907                 sort_func,
908                 Box::into_raw(super_callback0) as *mut _,
909                 destroy_call3,
910             );
911         }
912     }
913 
unselect_all(&self)914     fn unselect_all(&self) {
915         unsafe {
916             gtk_sys::gtk_list_box_unselect_all(self.as_ref().to_glib_none().0);
917         }
918     }
919 
unselect_row<P: IsA<ListBoxRow>>(&self, row: &P)920     fn unselect_row<P: IsA<ListBoxRow>>(&self, row: &P) {
921         unsafe {
922             gtk_sys::gtk_list_box_unselect_row(
923                 self.as_ref().to_glib_none().0,
924                 row.as_ref().to_glib_none().0,
925             );
926         }
927     }
928 
connect_activate_cursor_row<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId929     fn connect_activate_cursor_row<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
930         unsafe extern "C" fn activate_cursor_row_trampoline<P, F: Fn(&P) + 'static>(
931             this: *mut gtk_sys::GtkListBox,
932             f: glib_sys::gpointer,
933         ) where
934             P: IsA<ListBox>,
935         {
936             let f: &F = &*(f as *const F);
937             f(&ListBox::from_glib_borrow(this).unsafe_cast())
938         }
939         unsafe {
940             let f: Box_<F> = Box_::new(f);
941             connect_raw(
942                 self.as_ptr() as *mut _,
943                 b"activate-cursor-row\0".as_ptr() as *const _,
944                 Some(transmute(
945                     activate_cursor_row_trampoline::<Self, F> as usize,
946                 )),
947                 Box_::into_raw(f),
948             )
949         }
950     }
951 
emit_activate_cursor_row(&self)952     fn emit_activate_cursor_row(&self) {
953         let _ = unsafe {
954             glib::Object::from_glib_borrow(self.to_glib_none().0 as *mut gobject_sys::GObject)
955                 .emit("activate-cursor-row", &[])
956                 .unwrap()
957         };
958     }
959 
connect_move_cursor<F: Fn(&Self, MovementStep, i32) + 'static>( &self, f: F, ) -> SignalHandlerId960     fn connect_move_cursor<F: Fn(&Self, MovementStep, i32) + 'static>(
961         &self,
962         f: F,
963     ) -> SignalHandlerId {
964         unsafe extern "C" fn move_cursor_trampoline<P, F: Fn(&P, MovementStep, i32) + 'static>(
965             this: *mut gtk_sys::GtkListBox,
966             object: gtk_sys::GtkMovementStep,
967             p0: libc::c_int,
968             f: glib_sys::gpointer,
969         ) where
970             P: IsA<ListBox>,
971         {
972             let f: &F = &*(f as *const F);
973             f(
974                 &ListBox::from_glib_borrow(this).unsafe_cast(),
975                 from_glib(object),
976                 p0,
977             )
978         }
979         unsafe {
980             let f: Box_<F> = Box_::new(f);
981             connect_raw(
982                 self.as_ptr() as *mut _,
983                 b"move-cursor\0".as_ptr() as *const _,
984                 Some(transmute(move_cursor_trampoline::<Self, F> as usize)),
985                 Box_::into_raw(f),
986             )
987         }
988     }
989 
emit_move_cursor(&self, object: MovementStep, p0: i32)990     fn emit_move_cursor(&self, object: MovementStep, p0: i32) {
991         let _ = unsafe {
992             glib::Object::from_glib_borrow(self.to_glib_none().0 as *mut gobject_sys::GObject)
993                 .emit("move-cursor", &[&object, &p0])
994                 .unwrap()
995         };
996     }
997 
connect_row_activated<F: Fn(&Self, &ListBoxRow) + 'static>(&self, f: F) -> SignalHandlerId998     fn connect_row_activated<F: Fn(&Self, &ListBoxRow) + 'static>(&self, f: F) -> SignalHandlerId {
999         unsafe extern "C" fn row_activated_trampoline<P, F: Fn(&P, &ListBoxRow) + 'static>(
1000             this: *mut gtk_sys::GtkListBox,
1001             row: *mut gtk_sys::GtkListBoxRow,
1002             f: glib_sys::gpointer,
1003         ) where
1004             P: IsA<ListBox>,
1005         {
1006             let f: &F = &*(f as *const F);
1007             f(
1008                 &ListBox::from_glib_borrow(this).unsafe_cast(),
1009                 &from_glib_borrow(row),
1010             )
1011         }
1012         unsafe {
1013             let f: Box_<F> = Box_::new(f);
1014             connect_raw(
1015                 self.as_ptr() as *mut _,
1016                 b"row-activated\0".as_ptr() as *const _,
1017                 Some(transmute(row_activated_trampoline::<Self, F> as usize)),
1018                 Box_::into_raw(f),
1019             )
1020         }
1021     }
1022 
connect_row_selected<F: Fn(&Self, Option<&ListBoxRow>) + 'static>( &self, f: F, ) -> SignalHandlerId1023     fn connect_row_selected<F: Fn(&Self, Option<&ListBoxRow>) + 'static>(
1024         &self,
1025         f: F,
1026     ) -> SignalHandlerId {
1027         unsafe extern "C" fn row_selected_trampoline<P, F: Fn(&P, Option<&ListBoxRow>) + 'static>(
1028             this: *mut gtk_sys::GtkListBox,
1029             row: *mut gtk_sys::GtkListBoxRow,
1030             f: glib_sys::gpointer,
1031         ) where
1032             P: IsA<ListBox>,
1033         {
1034             let f: &F = &*(f as *const F);
1035             f(
1036                 &ListBox::from_glib_borrow(this).unsafe_cast(),
1037                 Option::<ListBoxRow>::from_glib_borrow(row).as_ref(),
1038             )
1039         }
1040         unsafe {
1041             let f: Box_<F> = Box_::new(f);
1042             connect_raw(
1043                 self.as_ptr() as *mut _,
1044                 b"row-selected\0".as_ptr() as *const _,
1045                 Some(transmute(row_selected_trampoline::<Self, F> as usize)),
1046                 Box_::into_raw(f),
1047             )
1048         }
1049     }
1050 
connect_select_all<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId1051     fn connect_select_all<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
1052         unsafe extern "C" fn select_all_trampoline<P, F: Fn(&P) + 'static>(
1053             this: *mut gtk_sys::GtkListBox,
1054             f: glib_sys::gpointer,
1055         ) where
1056             P: IsA<ListBox>,
1057         {
1058             let f: &F = &*(f as *const F);
1059             f(&ListBox::from_glib_borrow(this).unsafe_cast())
1060         }
1061         unsafe {
1062             let f: Box_<F> = Box_::new(f);
1063             connect_raw(
1064                 self.as_ptr() as *mut _,
1065                 b"select-all\0".as_ptr() as *const _,
1066                 Some(transmute(select_all_trampoline::<Self, F> as usize)),
1067                 Box_::into_raw(f),
1068             )
1069         }
1070     }
1071 
emit_select_all(&self)1072     fn emit_select_all(&self) {
1073         let _ = unsafe {
1074             glib::Object::from_glib_borrow(self.to_glib_none().0 as *mut gobject_sys::GObject)
1075                 .emit("select-all", &[])
1076                 .unwrap()
1077         };
1078     }
1079 
connect_selected_rows_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId1080     fn connect_selected_rows_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
1081         unsafe extern "C" fn selected_rows_changed_trampoline<P, F: Fn(&P) + 'static>(
1082             this: *mut gtk_sys::GtkListBox,
1083             f: glib_sys::gpointer,
1084         ) where
1085             P: IsA<ListBox>,
1086         {
1087             let f: &F = &*(f as *const F);
1088             f(&ListBox::from_glib_borrow(this).unsafe_cast())
1089         }
1090         unsafe {
1091             let f: Box_<F> = Box_::new(f);
1092             connect_raw(
1093                 self.as_ptr() as *mut _,
1094                 b"selected-rows-changed\0".as_ptr() as *const _,
1095                 Some(transmute(
1096                     selected_rows_changed_trampoline::<Self, F> as usize,
1097                 )),
1098                 Box_::into_raw(f),
1099             )
1100         }
1101     }
1102 
connect_toggle_cursor_row<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId1103     fn connect_toggle_cursor_row<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
1104         unsafe extern "C" fn toggle_cursor_row_trampoline<P, F: Fn(&P) + 'static>(
1105             this: *mut gtk_sys::GtkListBox,
1106             f: glib_sys::gpointer,
1107         ) where
1108             P: IsA<ListBox>,
1109         {
1110             let f: &F = &*(f as *const F);
1111             f(&ListBox::from_glib_borrow(this).unsafe_cast())
1112         }
1113         unsafe {
1114             let f: Box_<F> = Box_::new(f);
1115             connect_raw(
1116                 self.as_ptr() as *mut _,
1117                 b"toggle-cursor-row\0".as_ptr() as *const _,
1118                 Some(transmute(toggle_cursor_row_trampoline::<Self, F> as usize)),
1119                 Box_::into_raw(f),
1120             )
1121         }
1122     }
1123 
emit_toggle_cursor_row(&self)1124     fn emit_toggle_cursor_row(&self) {
1125         let _ = unsafe {
1126             glib::Object::from_glib_borrow(self.to_glib_none().0 as *mut gobject_sys::GObject)
1127                 .emit("toggle-cursor-row", &[])
1128                 .unwrap()
1129         };
1130     }
1131 
connect_unselect_all<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId1132     fn connect_unselect_all<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
1133         unsafe extern "C" fn unselect_all_trampoline<P, F: Fn(&P) + 'static>(
1134             this: *mut gtk_sys::GtkListBox,
1135             f: glib_sys::gpointer,
1136         ) where
1137             P: IsA<ListBox>,
1138         {
1139             let f: &F = &*(f as *const F);
1140             f(&ListBox::from_glib_borrow(this).unsafe_cast())
1141         }
1142         unsafe {
1143             let f: Box_<F> = Box_::new(f);
1144             connect_raw(
1145                 self.as_ptr() as *mut _,
1146                 b"unselect-all\0".as_ptr() as *const _,
1147                 Some(transmute(unselect_all_trampoline::<Self, F> as usize)),
1148                 Box_::into_raw(f),
1149             )
1150         }
1151     }
1152 
emit_unselect_all(&self)1153     fn emit_unselect_all(&self) {
1154         let _ = unsafe {
1155             glib::Object::from_glib_borrow(self.to_glib_none().0 as *mut gobject_sys::GObject)
1156                 .emit("unselect-all", &[])
1157                 .unwrap()
1158         };
1159     }
1160 
connect_property_activate_on_single_click_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId1161     fn connect_property_activate_on_single_click_notify<F: Fn(&Self) + 'static>(
1162         &self,
1163         f: F,
1164     ) -> SignalHandlerId {
1165         unsafe extern "C" fn notify_activate_on_single_click_trampoline<P, F: Fn(&P) + 'static>(
1166             this: *mut gtk_sys::GtkListBox,
1167             _param_spec: glib_sys::gpointer,
1168             f: glib_sys::gpointer,
1169         ) where
1170             P: IsA<ListBox>,
1171         {
1172             let f: &F = &*(f as *const F);
1173             f(&ListBox::from_glib_borrow(this).unsafe_cast())
1174         }
1175         unsafe {
1176             let f: Box_<F> = Box_::new(f);
1177             connect_raw(
1178                 self.as_ptr() as *mut _,
1179                 b"notify::activate-on-single-click\0".as_ptr() as *const _,
1180                 Some(transmute(
1181                     notify_activate_on_single_click_trampoline::<Self, F> as usize,
1182                 )),
1183                 Box_::into_raw(f),
1184             )
1185         }
1186     }
1187 
connect_property_selection_mode_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId1188     fn connect_property_selection_mode_notify<F: Fn(&Self) + 'static>(
1189         &self,
1190         f: F,
1191     ) -> SignalHandlerId {
1192         unsafe extern "C" fn notify_selection_mode_trampoline<P, F: Fn(&P) + 'static>(
1193             this: *mut gtk_sys::GtkListBox,
1194             _param_spec: glib_sys::gpointer,
1195             f: glib_sys::gpointer,
1196         ) where
1197             P: IsA<ListBox>,
1198         {
1199             let f: &F = &*(f as *const F);
1200             f(&ListBox::from_glib_borrow(this).unsafe_cast())
1201         }
1202         unsafe {
1203             let f: Box_<F> = Box_::new(f);
1204             connect_raw(
1205                 self.as_ptr() as *mut _,
1206                 b"notify::selection-mode\0".as_ptr() as *const _,
1207                 Some(transmute(
1208                     notify_selection_mode_trampoline::<Self, F> as usize,
1209                 )),
1210                 Box_::into_raw(f),
1211             )
1212         }
1213     }
1214 }
1215 
1216 impl fmt::Display for ListBox {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result1217     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1218         write!(f, "ListBox")
1219     }
1220 }
1221