Re: [gtk-list] GtkText and GdkFont



Chuck Mason wrote:
> 
> I guess I am, too, writing for help in an application I am writing.  So:
> 
> In my application I created a GtkText widget and placed it into the window
> I need. My question is how to change the font in the GtkText edit area...
> I know how to load the GdkFont (in fact, I did too), and use
> gtk_text_insert() with the font I want, but my problem is that when
> editing, the text edit area defaults back to the default font. If I try to
> use gtk_widget_set_style() with a new Style->font (for my font i use in
> gtk_text_insert) all the text on the menus, dialogs, everything changes,
> except for the edit area in GtkText.. Anyone know of a way to fix it so
> that the GtkText is always a certain font, and not only when text_insert
> is used.. ?
> 
> -Chuck

Chuck - I had the same problem, and this sorta worked as a solution
(also let me change the bg color of the text which was causing problems
too).  What I found works is that you should create the text box early,
as one of the first widgets, apply the style with
gtk_widget_set_style(), then do another gtk_widget_set_style(window,
gtk_style_new());  which worked for me:
(this isn't my exact code, just typed this in now, should work though)
-----------------------------------------------------
#include <gtk/gtk.h>

void delete(GtkWidget *widget, gpointer data)
{
	gtk_main_quit();
}


int main(int argc, char *argv[])
{
	GtkWidget *window;
	GtkWidget *text;
	GtkWidget *tbox;
	GtkWidget *vbox;
	GtkStyle  *style;
	GdkFont   *font;

	gtk_init(&argc, &argv);

	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window), "Test");
	gtk_signal_connect(GTK_OBJECT(window), "delete_event",
		GTK_SIGNAL_FUNC(delete), NULL);


	vbox = gtk_vbox_new(FALSE, 2);
	gtk_container_add(GTK_CONTAINER(window), vbox);
	gtk_widget_show(vbox);

	text = gtk_text_new(NULL, NULL);
	gtk_text_set_editable(GTK_TEXT(text), TRUE);
	style = gtk_style_new();
	font = gdk_font_load("-misc-fixed-medium-r-normal-*-120-*-*-*-*-*-*");
	
	style->font = font;
	gtk_widget_set_style(text, style);

	gtk_widget_set_style(window, gtk_style_new());

	tbox = gtk_entry_new();
	gtk_box_pack_start(GTK_BOX(vbox), text, TRUE, TRUE, 0);
	gtk_widget_show(text);
	gtk_box_pack_start(GTK_BOX(vbox), tbox, TRUE, TRUE, 0);
	gtk_widget_show(tbox);

	gtk_widget_show(window);

	gtk_main();
	return 0;
}
-------------------------------------------------

Hope that helps some

-Andrew



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]