Mercurial > dwindows
comparison gtk/dw.c @ 1003:08b7e8d7cbb3
Added support for Dynamic Windows style font names for GTK2.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sun, 08 May 2011 06:30:21 +0000 |
parents | f019c5e8511f |
children | 0469e278453c |
comparison
equal
deleted
inserted
replaced
1002:0802d6122ec7 | 1003:08b7e8d7cbb3 |
---|---|
18 # include <sys/mman.h> | 18 # include <sys/mman.h> |
19 #endif | 19 #endif |
20 #include <stdarg.h> | 20 #include <stdarg.h> |
21 #include <stdio.h> | 21 #include <stdio.h> |
22 #include <unistd.h> | 22 #include <unistd.h> |
23 #include <ctype.h> | |
23 #include <errno.h> | 24 #include <errno.h> |
24 #include <sys/time.h> | 25 #include <sys/time.h> |
25 #include <dirent.h> | 26 #include <dirent.h> |
26 #include <sys/stat.h> | 27 #include <sys/stat.h> |
27 #include <signal.h> | 28 #include <signal.h> |
2734 PangoFontDescription *pfont; | 2735 PangoFontDescription *pfont; |
2735 #else | 2736 #else |
2736 GdkFont *gdkfont; | 2737 GdkFont *gdkfont; |
2737 #endif | 2738 #endif |
2738 GtkWidget *handle2 = handle; | 2739 GtkWidget *handle2 = handle; |
2739 char *font; | 2740 char *font = strdup(fontname); |
2741 char *name = strchr(font, '.'); | |
2740 int _locked_by_me = FALSE; | 2742 int _locked_by_me = FALSE; |
2741 gpointer data; | 2743 gpointer data; |
2742 | 2744 |
2743 DW_MUTEX_LOCK; | 2745 DW_MUTEX_LOCK; |
2744 if(GTK_IS_SCROLLED_WINDOW(handle)) | 2746 if(GTK_IS_SCROLLED_WINDOW(handle)) |
2745 { | 2747 { |
2746 GtkWidget *tmp = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)); | 2748 GtkWidget *tmp = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)); |
2747 if(tmp) | 2749 if(tmp) |
2748 handle2 = tmp; | 2750 handle2 = tmp; |
2749 } | 2751 } |
2750 font = strdup(fontname); | |
2751 | 2752 |
2752 #if GTK_MAJOR_VERSION < 2 | 2753 #if GTK_MAJOR_VERSION < 2 |
2753 /* Free old font if it exists */ | 2754 /* Free old font if it exists */ |
2754 gdkfont = (GdkFont *)gtk_object_get_data(GTK_OBJECT(handle2), "_dw_gdkfont"); | 2755 gdkfont = (GdkFont *)gtk_object_get_data(GTK_OBJECT(handle2), "_dw_gdkfont"); |
2755 if(gdkfont) | 2756 if(gdkfont) |
2756 gdk_font_unref(gdkfont); | 2757 gdk_font_unref(gdkfont); |
2757 gdkfont = gdk_font_load(fontname); | 2758 gdkfont = gdk_font_load(fontname); |
2758 if(!gdkfont) | 2759 if(!gdkfont) |
2759 gdkfont = gdk_font_load("fixed"); | 2760 gdkfont = gdk_font_load("fixed"); |
2760 gtk_object_set_data(GTK_OBJECT(handle2), "_dw_gdkfont", (gpointer)gdkfont); | 2761 gtk_object_set_data(GTK_OBJECT(handle2), "_dw_gdkfont", (gpointer)gdkfont); |
2762 #else | |
2763 | |
2764 /* Detect Dynamic Windows style font name... | |
2765 * Format: ##.Fontname | |
2766 * and convert to a Pango name | |
2767 */ | |
2768 if(name && isdigit(*font)) | |
2769 { | |
2770 int size = atoi(font); | |
2771 *name = 0; | |
2772 name++; | |
2773 sprintf(font, "%s %d", name, size); | |
2774 } | |
2761 #endif | 2775 #endif |
2762 | 2776 |
2763 /* Free old font name if one is allocated */ | 2777 /* Free old font name if one is allocated */ |
2764 data = gtk_object_get_data(GTK_OBJECT(handle2), "_dw_fontname"); | 2778 data = gtk_object_get_data(GTK_OBJECT(handle2), "_dw_fontname"); |
2765 if(data) | 2779 if(data) |