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