Commit 9c7305f52087682658fb046adffb111f85a2240a

Authored by Perry Werneck
1 parent 48c976f5
Exists in master and in 1 other branch develop

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)