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 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)
... ...