Friday, 14 August 2009

Nodoka Rewrite – initial code builds and works

So, don't expect much. Just that I've finally got to making first piece of the Nodoka rewrite work. I've spent the whole day today figuring the GTK internals of button focus drawing and finally managed to get a result that works as I want it to work with all the gtkrc settings I can think of.

First, it's totally misleading that when interior focus is turned off, position and dimensions of widgets change (even though the canvas on which we draw remains same) between focused and unfocused states... Took me some time to figure out how exactly this happens and how to get rid of it from the point of view of drawing functions. All the GtkWidget::x/ythickness, GtkWidget::focus-line-width, GtkWidget::focus-padding and GtkWidget::interior-focus feels sort of like black magic to me… Also to preserve some compactness off the theme, while maintaining good configurability of the focus ring I've introduced focus_padding engine theme to allow bigger paddings for inner focus while maintaining same widget dimensions. I still need to handle the two different padding settings in style functions properly instead of letting the drawing functions handle it...

Well, to not only talk, here are some screenshots. As you see, nothing but button is implemented, so it's not really a good candidate for updating your gtk-nodoka-engine, but in case people want to try it or hack on it, the source is available.

No comments: