Hi McCLIM developers!
I have a few questions, in no particular order:
* I've started 'theming' McCLIM to give it a more modern look (a darker look).. I've started with /Looks/pixie.lisp and went from there. Is pixie.lisp an example of 'correct' skinning process - effectively creating new classes with overridden methods for various things or is it better to just redefine the handle-redraw methods of original gadgets and be done with it? Pixie has a problem for instance - mouse wheel scrolling doesn't work, because it reimplements scrolling logic implemented in gadgets.lisp or somewhere else. Wouldn't it be more correct to use the 'default' logic and only redefine handle-repaint methods, if change in functionality isn't needed?
* what is the correct way to add my own widgets? I assume I should look at gadgets.lisp and start from there. Are new widgets welcome in the main McCLIM source tree or is McCLIM closely following some CLIM specification and doesn't want to go beyond that?
* I'm using CLX backend and default/freetype/truetype font renedering. I've noticed that with default X11 font rendering, the usual textstyle (sans-serif, roman) is much more readable at size :small, than :normal. For antialiased fonts, :normal works great. Perhaps the default fontsize should be :small (or mcclim's clx default font render should just interpret :normal as :small) - clim- examples applications would look nicer out of the box and I wouldn't need to write cases in my app (if ''freetype'' :normal :small) to make stuff look nice. I think this has been mentioned before..
* right now McCLIMs 'textfield' is vastly different from text fields in other toolkits. I think we could conform better if the caret was just a line (not a block), if the caret blinked properly, if there was caret positioning via mouse click and if there was selection possible. I don't know how other McCLIM users feel about this - but if I added these features, would they be added to McCLIM? Would it be better to add a new 'gadget' for this 'modern' text field stuff?
Regards, Ziga
I alread answered these questions on #lisp, but here goes for documentation purposes.
I haven't looked at pixie, but the way I would do this would be to make handle-repaint call something like theme-handle-repaint with an additional argument of type `skin' or `look' or `theme' or whatever.
Inheriting from existing gadgets and overriding methods doesn't seem like the right approach. I might be wrong of course.
I think that's correct, yes.
Personally, I am in favor of more gadgets. They won't end up in the CLIM package, but that's no problem. CLIM was meant to be extended this way. If you make it a separate system (in the ASDF sense) then people can include it if they want.
I have no right answer for you. Perhaps one day we can have a rendering system that would be anti-aliased and look good at low resolutions. Currently that is not the case.
I would commit those features as changes to the existing text field unless someone can give me good reasons not to.
Regards,