diff --git a/src/dialogs/settings/clipboard.c b/src/dialogs/settings/clipboard.c index 6810039..ccdf51a 100644 --- a/src/dialogs/settings/clipboard.c +++ b/src/dialogs/settings/clipboard.c @@ -33,6 +33,7 @@ */ #include "private.h" + #include #include #include @@ -319,19 +320,20 @@ GtkWidget * v3270_clipboard_settings_new() { V3270Settings * settings = GTK_V3270_SETTINGS(g_object_new(V3270ClipboardSettings_get_type(), NULL)); - settings->title = _("Cut & Paste settings"); + settings->title = _("Clipboard properties"); settings->label = _("Clipboard"); return GTK_WIDGET(settings); } -static void load(GtkWidget *w, GtkWidget *terminal) { +static void load(GtkWidget *w, GtkWidget *t) { size_t ix; V3270ClipboardSettings *widget = (V3270ClipboardSettings *) w; + v3270 *terminal = GTK_V3270(t); - v3270_settings_load_toggle_buttons(toggles, G_N_ELEMENTS(toggles), terminal, widget->input.toggles); + v3270_settings_load_toggle_buttons(toggles, G_N_ELEMENTS(toggles), t, widget->input.toggles); // HTML Font combo { @@ -358,7 +360,7 @@ static void load(GtkWidget *w, GtkWidget *terminal) { PangoFontFamily **families; gint n_families; - pango_context_list_families(gtk_widget_get_pango_context(terminal),&families, &n_families); + pango_context_list_families(gtk_widget_get_pango_context(t),&families, &n_families); for(ix=0; ((gint) ix) < n_families; ix++) { @@ -377,6 +379,8 @@ static void load(GtkWidget *w, GtkWidget *terminal) { } + gtk_combo_box_select_column_uint(widget->input.combos[2],1,((terminal->selection.options & V3270_SELECTION_PLAIN_TEXT) ? 0 : 1)); + } static void apply(GtkWidget *w, GtkWidget *terminal) { diff --git a/src/dialogs/settings/private.h b/src/dialogs/settings/private.h index 5e2b939..8f44d81 100644 --- a/src/dialogs/settings/private.h +++ b/src/dialogs/settings/private.h @@ -34,6 +34,8 @@ #include #include + G_GNUC_INTERNAL void gtk_combo_box_select_column_uint(GtkComboBox * combo_box, gint column, guint value); + /// @brief Toggle button factory. struct ToggleButtonDefinition { gint left; diff --git a/src/dialogs/settings/tools.c b/src/dialogs/settings/tools.c index 1fc2a02..190b0e5 100644 --- a/src/dialogs/settings/tools.c +++ b/src/dialogs/settings/tools.c @@ -131,4 +131,54 @@ } + struct combo_select_uint { + GtkComboBox * combo_box; + gint column; + guint new_value; + }; + + static gboolean test_combo_select_uint(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, struct combo_select_uint *arg) { + + // Get value + GValue value = { 0, }; + gtk_tree_model_get_value(model,iter,arg->column,&value); + guint row_value = g_value_get_uint(&value); + g_value_unset(&value); + + if(row_value == arg->new_value) { + gtk_combo_box_set_active_iter(arg->combo_box,iter); + return TRUE; + } + + return FALSE; + } + + void gtk_combo_box_select_column_uint(GtkComboBox * combo_box, gint column, guint new_value) { + + GtkTreeIter iter; + GtkListStore * list = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo_box))); + + // Is the value already selected? + if(gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combo_box),&iter)) { + + GValue value = { 0, }; + gtk_tree_model_get_value(GTK_TREE_MODEL(list),&iter,column,&value); + guint active = g_value_get_uint(&value); + g_value_unset(&value); + + if(active == new_value) + return; + + } + + // No, it's not, find one. + struct combo_select_uint arg = { + .combo_box = combo_box, + .column = column, + .new_value = new_value + }; + + gtk_tree_model_foreach(GTK_TREE_MODEL(list),(GtkTreeModelForeachFunc) test_combo_select_uint, &arg); + } + -- libgit2 0.21.2