@@ -97,50 +97,53 @@ impl CustomFltkDialog {
97
97
// End Icon row
98
98
flex_icon_row. end ( ) ;
99
99
100
- // Start Button background
101
- let mut flex_button_background = Flex :: default ( ) . column ( ) ;
102
- flex_button_background. set_frame ( FrameType :: ThinUpBox ) ;
100
+ let mut btn_vec = Vec :: new ( ) ;
101
+
102
+ if !data. buttons . is_empty ( ) {
103
+ // Start Button background
104
+ let mut flex_button_background = Flex :: default ( ) . column ( ) ;
105
+ flex_button_background. set_frame ( FrameType :: ThinUpBox ) ;
103
106
104
- // Start Button row
105
- let mut flex_button_row = Flex :: default ( ) . row ( ) ;
106
- flex_button_row. set_spacing ( theme. button_panel_spacing ) ;
107
- flex_button_row. set_margin ( theme. button_panel_margin ) ;
107
+ // Start Button row
108
+ let mut flex_button_row = Flex :: default ( ) . row ( ) ;
109
+ flex_button_row. set_spacing ( theme. button_panel_spacing ) ;
110
+ flex_button_row. set_margin ( theme. button_panel_margin ) ;
108
111
109
- // Padding frame
110
- let _ = Frame :: default ( ) ;
112
+ // Padding frame
113
+ let _ = Frame :: default ( ) ;
111
114
112
- let mut btn_vec = Vec :: new ( ) ;
113
115
114
- // Buttons
115
- let button_iter: Vec < ( usize , & String ) > = if theme. button_order_reversed {
116
- data. buttons . iter ( ) . enumerate ( ) . rev ( ) . collect ( )
117
- } else {
118
- data. buttons . iter ( ) . enumerate ( ) . collect ( )
119
- } ;
120
- for ( index, button_text) in button_iter {
121
- let mut wnd_btn_click = wind. clone ( ) ;
122
- let mut flex_button_wrapper = Flex :: default ( ) . column ( ) ;
123
- let mut button = CustomButton :: new ( theme) ;
124
- button. set_label ( button_text. as_str ( ) ) ;
125
- button. set_label_size ( get_body_size ( ) ) ;
126
- button. set_label_font ( get_body_font ( ) ) ;
127
- button. set_callback ( move |_| {
128
- wnd_btn_click. hide ( ) ;
129
- insert_result ( id, XDialogResult :: ButtonPressed ( index) ) ;
130
- } ) ;
131
- flex_button_wrapper. end ( ) ;
132
- let ( w, _) = button. measure_label ( ) ;
133
- flex_button_row. fixed ( & mut flex_button_wrapper, w + ( theme. button_text_padding * 2 ) ) ;
134
-
135
- btn_vec. push ( button) ;
136
- }
116
+ // Buttons
117
+ let button_iter: Vec < ( usize , & String ) > = if theme. button_order_reversed {
118
+ data. buttons . iter ( ) . enumerate ( ) . rev ( ) . collect ( )
119
+ } else {
120
+ data. buttons . iter ( ) . enumerate ( ) . collect ( )
121
+ } ;
122
+ for ( index, button_text) in button_iter {
123
+ let mut wnd_btn_click = wind. clone ( ) ;
124
+ let mut flex_button_wrapper = Flex :: default ( ) . column ( ) ;
125
+ let mut button = CustomButton :: new ( theme) ;
126
+ button. set_label ( button_text. as_str ( ) ) ;
127
+ button. set_label_size ( get_body_size ( ) ) ;
128
+ button. set_label_font ( get_body_font ( ) ) ;
129
+ button. set_callback ( move |_| {
130
+ wnd_btn_click. hide ( ) ;
131
+ insert_result ( id, XDialogResult :: ButtonPressed ( index) ) ;
132
+ } ) ;
133
+ flex_button_wrapper. end ( ) ;
134
+ let ( w, _) = button. measure_label ( ) ;
135
+ flex_button_row. fixed ( & mut flex_button_wrapper, w + ( theme. button_text_padding * 2 ) ) ;
136
+
137
+ btn_vec. push ( button) ;
138
+ }
137
139
138
- // End Button row
139
- flex_button_row. end ( ) ;
140
+ // End Button row
141
+ flex_button_row. end ( ) ;
140
142
141
- // End Button background
142
- flex_button_background. end ( ) ;
143
- flex_root_col. fixed ( & mut flex_button_background, theme. button_panel_height ) ;
143
+ // End Button background
144
+ flex_button_background. end ( ) ;
145
+ flex_root_col. fixed ( & mut flex_button_background, theme. button_panel_height ) ;
146
+ }
144
147
145
148
// End Root column
146
149
flex_root_col. end ( ) ;
@@ -149,10 +152,18 @@ impl CustomFltkDialog {
149
152
wind. end ( ) ;
150
153
151
154
// Before showing the window, try and compute the optimal window size.
152
- let icon_width = if has_icon { theme. main_icon_size + theme. default_content_margin } else { 0 } ;
153
- let progress_height = if has_progress { 5 + theme. default_content_margin } else { 0 } ;
154
- let pad_x = icon_width + ( theme. default_content_margin * 2 ) ;
155
- let pad_y = ( theme. default_content_margin * 2 ) + theme. button_panel_height + theme. main_icon_size + progress_height;
155
+ let mut pad_y = theme. default_content_margin * 2 + theme. main_icon_size ;
156
+ if !data. buttons . is_empty ( ) {
157
+ pad_y += theme. button_panel_height ;
158
+ }
159
+ if has_progress {
160
+ pad_y += 10 ;
161
+ }
162
+
163
+ let mut pad_x = theme. default_content_margin * 2 ;
164
+ if has_icon {
165
+ pad_x += theme. main_icon_size + theme. default_content_margin ;
166
+ }
156
167
157
168
let mut ret = Self {
158
169
id,
@@ -252,6 +263,6 @@ fn calculate_ideal_window_size(body_text: &str, pad_x: i32, pad_y: i32) -> (i32,
252
263
253
264
let final_window_width = ( window_width + extra_width) . min ( 600 ) . min ( initial_width + pad_y) . max ( 350 ) ;
254
265
let ( _, wrapped_height) = draw:: wrap_measure ( body_text, final_window_width - pad_x, true ) ;
255
- let final_window_height = ( wrapped_height + pad_y + line_height) . max ( 130 ) ;
266
+ let final_window_height = ( wrapped_height + pad_y + line_height) . max ( 110 ) ;
256
267
( final_window_width, final_window_height)
257
268
}
0 commit comments