2012-11-15 [colin] 3.9.0cvs4
[claws.git] / src / gtk / combobox.c
index 5f04f433440b629aeaf5cca32fc63f0585bb7e6b..db0e68f8191557aa144da315dfa489a953a44723 100644 (file)
@@ -45,16 +45,31 @@ GtkWidget *combobox_text_new(const gboolean with_entry, const gchar *text, ...)
        if(text == NULL)
                return NULL;
        
+#if !GTK_CHECK_VERSION(2, 24, 0)
        if (with_entry)
                combo = gtk_combo_box_entry_new_text();
        else
                combo = gtk_combo_box_new_text();
+#else
+       if (with_entry)
+               combo = gtk_combo_box_text_new_with_entry();
+       else
+               combo = gtk_combo_box_text_new();
+#endif
        gtk_widget_show(combo);
 
+#if !GTK_CHECK_VERSION(2, 24, 0)
        gtk_combo_box_append_text(GTK_COMBO_BOX(combo), text);
+#else
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), text);
+#endif
        va_start(args, text);
        while ((string = va_arg(args, gchar*)) != NULL)
+#if !GTK_CHECK_VERSION(2, 24, 0)
                gtk_combo_box_append_text(GTK_COMBO_BOX(combo), string);
+#else
+               gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), string);
+#endif
        va_end(args);
                
        gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
@@ -82,7 +97,9 @@ void combobox_select_by_data(GtkComboBox *combobox, gint data)
 {
        GtkTreeModel *model;
        ComboboxSelCtx *ctx = NULL;
+
        cm_return_if_fail(combobox != NULL);
+       cm_return_if_fail(GTK_IS_COMBO_BOX (combobox));
 
        model = gtk_combo_box_get_model(combobox);
 
@@ -102,6 +119,9 @@ static gboolean _select_by_text_func(GtkTreeModel *model,   GtkTreePath *path,
        const gchar *data = ctx->cdata;
        const gchar *curdata;
 
+       cm_return_val_if_fail(combobox != NULL, FALSE);
+       cm_return_val_if_fail(GTK_IS_COMBO_BOX (combobox), FALSE);
+
        gtk_tree_model_get (GTK_TREE_MODEL(model), iter, 0, &curdata, -1);
        if (!g_utf8_collate(data, curdata)) {
                gtk_combo_box_set_active_iter(combobox, iter);
@@ -115,13 +135,19 @@ void combobox_select_by_text(GtkComboBox *combobox, const gchar *data)
 {
        GtkTreeModel *model;
        ComboboxSelCtx *ctx = NULL;
+#if !GTK_CHECK_VERSION(2, 24, 0)
        GtkComboBoxClass *class;
+#endif
 
        cm_return_if_fail(combobox != NULL);
+#if !GTK_CHECK_VERSION(2, 24, 0)
        class = GTK_COMBO_BOX_GET_CLASS (combobox);
 
        /* we can do that only with gtk_combo_box_new_text() combo boxes */
        cm_return_if_fail(class->get_active_text != NULL);
+#else
+       cm_return_if_fail(GTK_IS_COMBO_BOX (combobox));
+#endif
 
        model = gtk_combo_box_get_model(combobox);
 
@@ -141,7 +167,7 @@ gint combobox_get_active_data(GtkComboBox *combobox)
        gint data;
 
        cm_return_val_if_fail(combobox != NULL, -1);
-
+       cm_return_val_if_fail(GTK_IS_COMBO_BOX (combobox), -1);
        cm_return_val_if_fail(gtk_combo_box_get_active_iter(combobox, &iter), -1);
 
        model = gtk_combo_box_get_model(combobox);
@@ -151,28 +177,51 @@ gint combobox_get_active_data(GtkComboBox *combobox)
        return data;
 }
 
+#if !GTK_CHECK_VERSION(2, 24, 0)
 void combobox_unset_popdown_strings(GtkComboBox *combobox)
+#else
+void combobox_unset_popdown_strings(GtkComboBoxText *combobox)
+#endif
 {
        GtkTreeModel *model;
        gint count, i;
 
        cm_return_if_fail(combobox != NULL);
+#if GTK_CHECK_VERSION(2, 24, 0)
+       cm_return_if_fail(GTK_IS_COMBO_BOX_TEXT (combobox));
+#endif
 
-       model = gtk_combo_box_get_model(combobox);
+       model = gtk_combo_box_get_model(GTK_COMBO_BOX(combobox));
        count = gtk_tree_model_iter_n_children(model, NULL);
        for (i = 0; i < count; i++)
+#if !GTK_CHECK_VERSION(2, 24, 0)
                gtk_combo_box_remove_text(combobox, 0);
+#else
+               gtk_combo_box_text_remove(GTK_COMBO_BOX_TEXT(combobox), 0);
+#endif
 }
 
+#if !GTK_CHECK_VERSION(2, 24, 0)
 void combobox_set_popdown_strings(GtkComboBox *combobox,
+#else
+void combobox_set_popdown_strings(GtkComboBoxText *combobox,
+#endif
                                 GList       *list)
 {
        GList *cur;
 
        cm_return_if_fail(combobox != NULL);
+#if GTK_CHECK_VERSION(2, 24, 0)
+       cm_return_if_fail(GTK_IS_COMBO_BOX_TEXT (combobox));
+#endif
 
        for (cur = list; cur != NULL; cur = g_list_next(cur))
+#if !GTK_CHECK_VERSION(2, 24, 0)
                gtk_combo_box_append_text(combobox, (const gchar*) cur->data);
+#else
+               gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combobox),
+                                               (const gchar*) cur->data);
+#endif
 }
 
 gboolean combobox_set_value_from_arrow_key(GtkComboBox *combobox,
@@ -205,9 +254,14 @@ gboolean combobox_set_value_from_arrow_key(GtkComboBox *combobox,
                /* if current text is in list, get prev or next one */
 
                if (keyval == GDK_KEY_Up) {
+#if !GTK_CHECK_VERSION(2, 24, 0)
                        gchar *text = gtk_combo_box_get_active_text(combobox);
                        if (!text)
                                text = gtk_editable_get_chars(GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(combobox))),0,-1);
+#else
+                       gchar *text = NULL;
+                       gtk_tree_model_get(model, &iter, 0, &text, -1);
+#endif
                        valid = gtkut_tree_model_text_iter_prev(model, &iter, text);
                        g_free(text);
                } else