Commit 9c7305f52087682658fb046adffb111f85a2240a
1 parent
48c976f5
Exists in
master
and in
1 other branch
Selecting first sensitive page on settings notebook.
Showing
1 changed file
with
34 additions
and
4 deletions
Show diff stats
src/dialogs/settings/dialog.c
... | ... | @@ -284,10 +284,23 @@ GtkWidget * v3270_settings_dialog_new() |
284 | 284 | |
285 | 285 | } |
286 | 286 | |
287 | -static void set_terminal_widget(GtkWidget *settings, GtkWidget *terminal) | |
287 | +struct _set_terminal_info | |
288 | +{ | |
289 | + GtkNotebook *notebook; ///< @brief The notebook. | |
290 | + GtkWidget *terminal; ///< @brief The V3270 terminal. | |
291 | + gint selected; ///< @brief First sensitive page (-1 = none) | |
292 | +}; | |
293 | + | |
294 | +static void set_terminal_widget(GtkWidget *settings, struct _set_terminal_info *info) | |
288 | 295 | { |
289 | 296 | if(GTK_IS_V3270_SETTINGS(settings)) |
290 | - v3270_settings_set_terminal_widget(settings,terminal); | |
297 | + { | |
298 | + v3270_settings_set_terminal_widget(settings,info->terminal); | |
299 | + if(gtk_widget_get_sensitive(settings) && info->selected < 0) | |
300 | + info->selected = gtk_notebook_page_num(info->notebook,settings); | |
301 | + } | |
302 | + | |
303 | + gtk_widget_show(settings); | |
291 | 304 | } |
292 | 305 | |
293 | 306 | void v3270_settings_dialog_set_terminal_widget(GtkWidget *widget, GtkWidget *terminal) |
... | ... | @@ -298,11 +311,28 @@ void v3270_settings_dialog_set_terminal_widget(GtkWidget *widget, GtkWidget *ter |
298 | 311 | |
299 | 312 | GTK_V3270_SETTINGS_DIALOG(widget)->terminal = terminal; |
300 | 313 | |
314 | + struct _set_terminal_info info = { | |
315 | + .notebook = GTK_V3270_SETTINGS_DIALOG(widget)->tabs, | |
316 | + .terminal = terminal, | |
317 | + .selected = -1 | |
318 | + }; | |
319 | + | |
301 | 320 | gtk_container_foreach( |
302 | - GTK_CONTAINER(GTK_V3270_SETTINGS_DIALOG(widget)->tabs), | |
321 | + GTK_CONTAINER(info.notebook), | |
303 | 322 | (GtkCallback) set_terminal_widget, |
304 | - terminal | |
323 | + &info | |
305 | 324 | ); |
325 | + | |
326 | + if(info.selected >= 0) | |
327 | + { | |
328 | + debug("Found active page on %d",info.selected); | |
329 | + gtk_notebook_set_current_page(info.notebook, info.selected); | |
330 | + } | |
331 | + else | |
332 | + { | |
333 | + g_message("No active page on settings dialog"); | |
334 | + } | |
335 | + | |
306 | 336 | } |
307 | 337 | |
308 | 338 | void v3270_settings_dialog_set_has_subtitle(GtkWidget *widget, gboolean has_subtitle) | ... | ... |