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)