Web lists-archives.com

gtk/quartz default font woe, and gtk-font-name

I have been staring at this particular section of code for a few days, and seem to be having problem with it:


Try setting the default font, might need to tweak this.

2008-05-26  Richard Hult  <richard@xxxxxxxxxxx>

	* gdk/quartz/gdkevents-quartz.c: (gdk_screen_get_setting): Try
	setting the default font, might need to tweak this.

svn path=/trunk/; revision=20181

What I have is this error and this stack dump - which seems to come from "name = [[NSFont systemFontOfSize:0] familyName];" - 
although the message is somewhat different, but there is only one thing in gdk_screen_get_setting which does fonts, so that must be it -
I think __NSGetMetaFontInstance is some sort of backend code to "[[NSFont systemFontOfSize:0] familyName]".

 -[__NSCFType symbolicTraits]: unrecognized selector sent to instance 0x7c9a7000

        0   CoreFoundation                      0x9569c471 __raiseError + 193
        1   libobjc.A.dylib                     0x92ad6091 objc_exception_throw + 162
        2   CoreFoundation                      0x956a0cb3 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
        3   CoreFoundation                      0x955ec522 ___forwarding___ + 1010
        4   CoreFoundation                      0x955ec10e _CF_forwarding_prep_0 + 14
        5   AppKit                              0x90dfee7e -[__NSFontTypefaceInfo _postscriptName] + 331
        6   AppKit                              0x90dfe86e +[__NSFontTypefaceInfo typefaceInfoForPostscriptName:] + 914
        7   AppKit                              0x90dfddf5 __NSGetMetaFontInstance + 592
        8   libgdk-quartz-2.0.0.dylib           0x0732befa gdk_screen_get_setting + 474
        9   libgtk-quartz-2.0.0.dylib           0x08ac31d6 gtk_settings_get_property + 438
        10  libgobject-2.0.0.dylib              0x0782af08 object_get_property + 248
        11  libgobject-2.0.0.dylib              0x0782ab02 g_object_get_valist + 658
        12  libgobject-2.0.0.dylib              0x0782b115 g_object_get + 245
        13  libgtk-quartz-2.0.0.dylib           0x08a7894a gtk_rc_context_get + 314
        14  libgtk-quartz-2.0.0.dylib           0x08a78e9d gtk_rc_reparse_all_for_settings + 285
        15  libgtk-quartz-2.0.0.dylib           0x08abad27 gtk_settings_get_for_screen + 423
        16  libgtk-quartz-2.0.0.dylib           0x08abafb6 gtk_settings_get_default + 38
        17  libgtk-quartz-2.0.0.dylib           0x08ada27b gtk_style_init + 27
        18  libgobject-2.0.0.dylib              0x07847f3e g_type_create_instance + 558
        19  libgobject-2.0.0.dylib              0x07829c44 g_object_constructor + 36
        20  libgobject-2.0.0.dylib              0x07828fc2 g_object_newv + 354
        21  libgobject-2.0.0.dylib              0x07828e1d g_object_new + 157
        22  libgtk-quartz-2.0.0.dylib           0x08ada993 gtk_style_new + 35
        23  libgtk-quartz-2.0.0.dylib           0x08c144f4 gtk_widget_get_default_style + 36
        24  libgtk-quartz-2.0.0.dylib           0x08c06b5e gtk_widget_init + 478
        25  libgobject-2.0.0.dylib              0x07847ed9 g_type_create_instance + 457
        26  libgobject-2.0.0.dylib              0x07829c44 g_object_constructor + 36
        27  libgobject-2.0.0.dylib              0x078293af g_object_newv + 1359
        28  libglibsharpglue-2.so               0x07588e64 gtksharp_object_newv + 228

FWIW, I am trying to embed a gtk scrolledwindow inside a carbon application. The gtk scrolledwindow in turn, has another foreign Cocoa widget inside.

I mainly have two questions:

- I think the error I am seeing is that a "strange" non-Cocoa window doesn't let me get at Cocoa's default NS system fonts. I am tempted to reverse that patch (and hard-coding a particular font name) to see if I am right. Is there any caveate for trying to do that, or is there a better way of improving this change? or is there any way I can give my widget more of a Cocoa attributes/properties to make it happen? The problem is that the error is happening at gtk_widget_init, and I am at a loss at how I can insert anything "earlier" than the constructor.

- supposedly setting "gtk-font-name" should bypass that code - but I ran dtruss against my app and it never tried to read ~/.gtkrc-20, any of the rc files in the gtk directory, etc. Is that a known quirk of gtk/quartz ? That it ignores ~/.gtkrc, GTK2_RC_FILES and friends? I don't think that's always the case since Monodevelop and Banshee both ships some sort of theming rc's. But it just seem that gtk_widget_init then gtk_style_init, never read those files, for some reason? this behavior seems to be poorly documented.
(you can probably tell from that gtksharp_object_newv I am using gtksharp).
gtk-devel-list mailing list