# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1306396630 0 # Node ID 2c2fcfeeffcc892484d9692793bb77353073a9ef # Parent 6ad81183451284873c9cd8ff00cc7ff0e9cf46e2 Attempt at making dw_window_get_font() return a Dynamic Windows style font name on GTK. Attempt at allowing dw_window_set/get_font() work on groupbox labels on GTK. Moved dwtest MDI notebook page into a DEPRECATED #ifdef to prevent tons of warnings on GTK3. diff -r 6ad811834512 -r 2c2fcfeeffcc dwtest.c --- a/dwtest.c Thu May 26 07:52:47 2011 +0000 +++ b/dwtest.c Thu May 26 07:57:10 2011 +0000 @@ -1172,6 +1172,7 @@ } } +#ifdef DEPRECATED void mdi_add(void) { HWND mdibox, mdi, mdi1w, mdi1box, ef, mdi2w, mdi2box, bb; @@ -1203,6 +1204,7 @@ dw_window_set_size(mdi2w, 200, 200); dw_window_show(mdi2w); } +#endif void menu_add(void) { @@ -1289,7 +1291,9 @@ ULONG notebookpage3; ULONG notebookpage4; ULONG notebookpage5; +#ifdef DEPRECATED ULONG notebookpage6; +#endif ULONG notebookpage7; ULONG notebookpage8; @@ -1336,12 +1340,14 @@ dw_notebook_pack( notebook, notebookpage5, notebookbox5 ); dw_notebook_page_set_text( notebook, notebookpage5, "buttons"); buttons_add(); - + +#ifdef DEPRECATED notebookbox6 = dw_box_new( BOXVERT, 5 ); notebookpage6 = dw_notebook_page_new( notebook, 1, FALSE ); dw_notebook_pack( notebook, notebookpage6, notebookbox6 ); dw_notebook_page_set_text( notebook, notebookpage6, "mdi"); mdi_add(); +#endif notebookbox7 = dw_box_new( BOXVERT, 6 ); notebookpage7 = dw_notebook_page_new( notebook, 1, FALSE ); diff -r 6ad811834512 -r 2c2fcfeeffcc gtk/dw.c --- a/gtk/dw.c Thu May 26 07:52:47 2011 +0000 +++ b/gtk/dw.c Thu May 26 07:57:10 2011 +0000 @@ -2749,6 +2749,13 @@ if(tmp) handle2 = tmp; } + /* If it is a groupox we want to operate on the frame label */ + else if(GTK_IS_FRAME(handle)) + { + GtkWidget *tmp = gtk_frame_get_label_widget(GTK_FRAME(handle)); + if(tmp) + handle2 = tmp; + } #if GTK_MAJOR_VERSION < 2 /* Free old font if it exists */ @@ -2818,6 +2825,13 @@ if(tmp) handle2 = tmp; } + /* If it is a groupox we want to operate on the frame label */ + else if(GTK_IS_FRAME(handle)) + { + GtkWidget *tmp = gtk_frame_get_label_widget(GTK_FRAME(handle)); + if(tmp) + handle2 = tmp; + } #if GTK_MAJOR_VERSION < 2 /* Free old font if it exists */ @@ -2837,8 +2851,32 @@ pfont = pango_context_get_font_description( pcontext ); if ( pfont ) { + int len, x; + font = pango_font_description_to_string( pfont ); retfont = strdup(font); + len = strlen(font); + /* Convert to Dynamic Windows format if we can... */ + if(len > 0 && isdigit(font[len-1])) + { + int size; + + x=len-1; + while(x > 0 && font[x] != ' ') + { + x--; + } + size = atoi(&font[x]); + /* If we were able to find a valid size... */ + if(size > 0) + { + /* Null terminate after the name... + * and create the Dynamic Windows style font. + */ + font[x] = 0; + snprintf(retfont, len+1, "%d.%s", size, font); + } + } g_free( font ); } } @@ -3272,30 +3310,13 @@ */ HWND dw_groupbox_new(int type, int pad, char *title) { - GtkWidget *tmp, *frame, *label; - PangoFontDescription *pfont; - PangoContext *pcontext; + GtkWidget *tmp, *frame; int _locked_by_me = FALSE; DW_MUTEX_LOCK; frame = gtk_frame_new(NULL); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); gtk_frame_set_label(GTK_FRAME(frame), title && *title ? title : NULL); - /* - * Get the current font for the frame's label and make it bold - */ - label = gtk_frame_get_label_widget(GTK_FRAME(frame)); - pcontext = gtk_widget_get_pango_context( label ); - if ( pcontext ) - { - pfont = pango_context_get_font_description( pcontext ); - if ( pfont ) - { - pango_font_description_set_weight( pfont, PANGO_WEIGHT_BOLD ); - gtk_widget_modify_font( label, pfont ); - } - } - tmp = gtk_table_new(1, 1, FALSE); gtk_container_border_width(GTK_CONTAINER(tmp), pad); gtk_object_set_data(GTK_OBJECT(tmp), "_dw_boxtype", GINT_TO_POINTER(type)); diff -r 6ad811834512 -r 2c2fcfeeffcc gtk3/dw.c --- a/gtk3/dw.c Thu May 26 07:52:47 2011 +0000 +++ b/gtk3/dw.c Thu May 26 07:57:10 2011 +0000 @@ -2522,6 +2522,13 @@ if(tmp) handle2 = tmp; } + /* If it is a groupox we want to operate on the frame label */ + else if(GTK_IS_FRAME(handle)) + { + GtkWidget *tmp = gtk_frame_get_label_widget(GTK_FRAME(handle)); + if(tmp) + handle2 = tmp; + } /* Detect Dynamic Windows style font name... * Format: ##.Fontname @@ -2573,6 +2580,13 @@ if(tmp) handle2 = tmp; } + /* If it is a groupox we want to operate on the frame label */ + else if(GTK_IS_FRAME(handle)) + { + GtkWidget *tmp = gtk_frame_get_label_widget(GTK_FRAME(handle)); + if(tmp) + handle2 = tmp; + } pcontext = gtk_widget_get_pango_context( handle2 ); if ( pcontext ) @@ -2580,8 +2594,32 @@ pfont = pango_context_get_font_description( pcontext ); if ( pfont ) { + int len, x; + font = pango_font_description_to_string( pfont ); retfont = strdup(font); + len = strlen(font); + /* Convert to Dynamic Windows format if we can... */ + if(len > 0 && isdigit(font[len-1])) + { + int size; + + x=len-1; + while(x > 0 && font[x] != ' ') + { + x--; + } + size = atoi(&font[x]); + /* If we were able to find a valid size... */ + if(size > 0) + { + /* Null terminate after the name... + * and create the Dynamic Windows style font. + */ + font[x] = 0; + snprintf(retfont, len+1, "%d.%s", size, font); + } + } g_free( font ); } } @@ -2962,29 +3000,13 @@ */ HWND dw_groupbox_new(int type, int pad, char *title) { - GtkWidget *tmp, *frame, *label; - PangoFontDescription *pfont; - PangoContext *pcontext; + GtkWidget *tmp, *frame; int _locked_by_me = FALSE; DW_MUTEX_LOCK; frame = gtk_frame_new(NULL); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN); gtk_frame_set_label(GTK_FRAME(frame), title && *title ? title : NULL); - /* - * Get the current font for the frame's label and make it bold - */ - label = gtk_frame_get_label_widget(GTK_FRAME(frame)); - pcontext = gtk_widget_get_pango_context( label ); - if ( pcontext ) - { - pfont = pango_context_get_font_description( pcontext ); - if ( pfont ) - { - pango_font_description_set_weight( pfont, PANGO_WEIGHT_BOLD ); - gtk_widget_modify_font( label, pfont ); - } - } tmp = gtk_table_new(1, 1, FALSE); gtk_container_set_border_width(GTK_CONTAINER(tmp), pad);