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,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 | if(GTK_IS_V3270_SETTINGS(settings)) | 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 | void v3270_settings_dialog_set_terminal_widget(GtkWidget *widget, GtkWidget *terminal) | 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,11 +311,28 @@ void v3270_settings_dialog_set_terminal_widget(GtkWidget *widget, GtkWidget *ter | ||
298 | 311 | ||
299 | GTK_V3270_SETTINGS_DIALOG(widget)->terminal = terminal; | 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 | gtk_container_foreach( | 320 | gtk_container_foreach( |
302 | - GTK_CONTAINER(GTK_V3270_SETTINGS_DIALOG(widget)->tabs), | 321 | + GTK_CONTAINER(info.notebook), |
303 | (GtkCallback) set_terminal_widget, | 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 | void v3270_settings_dialog_set_has_subtitle(GtkWidget *widget, gboolean has_subtitle) | 338 | void v3270_settings_dialog_set_has_subtitle(GtkWidget *widget, gboolean has_subtitle) |