Eric, On Sun, Sep 24, 2017 at 1:51 AM, Igor Korot <ikorot01@xxxxxxxxx> wrote: > Eric, > > On Sun, Sep 24, 2017 at 12:33 AM, <cecashon@xxxxxxx> wrote: >> >> When I test it out it looks like the font selection widget doesn't work very >> well in GTK3. >> >> Not quite sure how you have it setup for GTK2 and what information you are >> using to activate the apply button. The GValue that I get returned is a >> PangoFcFamily*. I don't think this will help unless you pull in private data >> from Pango. You don't like "The quick brown fox..."? > > This is what I see on the Terminal: > > igor@IgorDellGentoo ~ $ ./fontsel > Cursor Changed > 43 > ((PangoFcFamily*) 0xba5a40) > Cursor Changed > 43 > ((PangoFcFamily*) 0xba5a40) > Cursor Changed > 43 > ((PangoFcFamily*) 0xba5a40) > Cursor Changed > 43 > ((PangoFcFamily*) 0xba5a40) > Cursor Changed > 44 > ((PangoFcFamily*) 0xba5a80) > > It initially selects "Sans" and then I select "Serif". > > I'm testing with GTK+2.24 on Gentoo Linux. I was calling "g_value_get_string( &value )" and this function failed. That's why I did see an empty string. I didn't look at the GTK+ sources but it looks like the value retrieved is just an address of the string and not the string itself. I do have a workaround. I didn't test it yet, but I'd prefer to get this info this way. Is there anything else? Thank you. > > Thank you. > >> >> Eric >> >> /* >> gcc -Wall font_selection1.c -o font_selection1 `pkg-config --cflags >> --libs gtk+-3.0` >> gcc -Wall font_selection1.c -o font_selection1 `pkg-config --cflags >> --libs gtk+-2.0` >> Tested with GTK3.18 on Ubuntu16.04 >> */ >> >> #include<gtk/gtk.h> >> >> static void font_name_change(GtkTreeView *view, gpointer user_data) >> { >> g_print("Cursor Changed\n"); >> GtkTreeIter iter; >> GValue value=G_VALUE_INIT; >> GList *selRows = NULL; >> GtkTreeSelection *sel = gtk_tree_view_get_selection( view ); >> GtkTreeModel *model = gtk_tree_view_get_model( view ); >> selRows = gtk_tree_selection_get_selected_rows( sel, &model ); >> if(selRows!=NULL) >> { >> gchar *string1=gtk_tree_path_to_string((GtkTreePath >> *)selRows[0].data); >> g_print("%s\n", string1); >> g_free(string1); >> if(gtk_tree_model_get_iter( model, &iter, (GtkTreePath >> *)selRows[0].data )) >> { >> gtk_tree_model_get_value( model, &iter, 0, &value ); >> gchar *string2=g_strdup_value_contents(&value); >> g_print("%s\n", string2); >> g_free(string2); >> } >> else >> { >> g_print("Need a valid iter.\n"); >> } >> } >> else >> { >> g_print("No list.\n"); >> } >> >> g_list_free_full(selRows, (GDestroyNotify) gtk_tree_path_free); >> >> } >> int main(int argc, char *argv[]) >> { >> gtk_init (&argc, &argv); >> >> GtkWidget *window=gtk_window_new (GTK_WINDOW_TOPLEVEL); >> gtk_window_set_title(GTK_WINDOW(window), "Font Selecton"); >> gtk_window_set_default_size(GTK_WINDOW(window), 400, 400); >> gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); >> g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); >> >> G_GNUC_BEGIN_IGNORE_DEPRECATIONS >> GtkWidget *m_fontPanel=gtk_font_selection_new(); >> GtkWidget *names = gtk_font_selection_get_family_list((GtkFontSelection >> *) m_fontPanel ); >> //For GTK3. >> gtk_tree_view_set_activate_on_single_click(GTK_TREE_VIEW(names), TRUE); >> //GtkWidget *sizes = gtk_font_selection_get_size_entry((GtkFontSelection >> *) m_fontPanel ); >> g_signal_connect( names, "cursor-changed", G_CALLBACK(font_name_change), >> NULL ); >> G_GNUC_END_IGNORE_DEPRECATIONS >> >> gtk_container_add(GTK_CONTAINER(window), m_fontPanel); >> >> gtk_widget_show_all(window); >> >> gtk_main(); >> >> return 0; >> } >> >> _______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx https://mail.gnome.org/mailman/listinfo/gtk-list