ChangeLog ========= Xenophilia-0.7: As always, I have hardly left any code untouched for this release ;-). System changes: * Now uses a different image set for pseudocolor displays, which will reduce color usage even more. * Recognizes the environment variables XENO_THEME_PATCH (set to "NONE" to disable patches) and XENO_THEME_CMAP (set to "YES" to fool the engine it is running on a pseudocolor display). * Now accepts themes made for the "XenoStep" mod, but that doesn't say that it respects all options. ;-) * A port to GTK 1.3/2.0 is underway. It compiles, but it does not work ... I will not implement support for style-properties until they are in 1.3 in a somewhat stable state. The patches will stay in there for as long as they are needed. Improved background code: Overall: * Background-relative color is set only for the primary window of a widget, i.e. no more dark sliders knobs. Background pixmap: * Automatically sets "bg[]" to the average color from "bg_pixmap[]" if there is one, which means that the colors used for shadows will also be computed accordingly. * Pixmap alignment option: "align" '['']' '=' ("default" | ) Example: align[NORMAL] = 0.5 0.5, will center the background pixmap. Parameters "window" and "root" will be implemented later for fake transparency. Gradients: * Gradients are now reference-counted and looked up faster. * Gradients are dithered, minimizing banding artifacts. The downside is that a large diagonal gradients now occupies a large pixmap and takes much more time to create than before. * Gradients in pseudocolor are dithered using only two additional colors. * If there is a background pixmap and a gradient, they will be combined. Looks great, but becomes almost too slow to be bearable for large pixmaps. Use well. * Radio buttons can have diagonal gradients. Improved shadow code: * New shadow types: ["none"|"etched"|"thin"|"black"|"note"|"next"|"default"] ("in"|"out") * Shadow options "in" and "out". They take state types. Shade anyway you want! If unset, the Xenophilia shadow-selection code will kick in. * Text labels can be shaded, same manner as shadow options. E.g. if you want text to be bevelled in when insensitive, use "label[INSENSITIVE] = in". * Shadow option "none" for prelighted toolbar-buttons. Default is "black out". Small changes: * No more prelight on GTK_SHADOW_IN frames. * Small changes to scrollbar code. * Uses a separate color for antialiasing scrollbar buttons. Xenophilia-0.6: This is mostly a bug-fix release. Visual changes: * The popup_arrows arrows are different. I think these are better. * Reduced color usage on pseudocolor displays. Xenophilia-0.5: A lot of things have been rewritten for this release. I hope it does not have any serious bugs that would impact its stability. =) System changes: * A patch will not have effect on a widget unless the widget is themed to use the engine. This does not mean that patches will not be installed, it just means that the patched functions will work as default GTK+ unless "xeno" is defined to be used as engine in the current style or in an inherited style. An exception is the space between viewports and scrollbars which is set to 1 pixel. If you know of any better way to do it, please mail me . Visual changes: * Numeric entries with up and down-arrows (GtkSpinButton) are now right-justified. This was common on the Amiga. Some people like this, others don't. The patch was written (originally as a subclass) by Gian Luigi Gragnani. Thanks! * A better-looking checkmark image, in a couple of sizes. * There is no longer an arrow in torn-off menus, instead there are more lines. You wouldn't notice it unless I told you. =) * Resizebars have prelighting. Yeah, it did not have it per default. New options: * Gradients! Just wrote it, a little bit unstable. The syntax is: bg_style '['']' = gradient [] where is one of "horizontal", "vertical" and "diagonal". The factor is used for blending between the background color and the light and dark colors. 1.0: no shading, 2.0: full gradient, 0.0: full inverted gradient. Horizontal and vertical gradients are very fast but consume little memory, diagonal gradients consume a little more. No dithering is done, so use gradients only with grayscale or true color displays. * Added "box" knob type, which has always been the default for the resizebars. * You can now redefine the shading factors for the colors used as "white" and "black", and for each state. These can be used for very bright and very dark themes. The default for "white" is 2.0 and for "black" it is 0.0, i.e. white and black. * The shadow types for the prelighted menu item and frame around the default button (the one that is automatically clicked when pressing RETURN) are now configurable. menu_item_shadow = button_default = where is "in", "out" or "none" preceded with an optional "thin". * The shadow around windows are now optional. This would look better with window managers such as KWM where the windows have no internal border. The option is "flat_windows = ". Default is "false". Small changes: * Insensitive frames now use shaded colors instead of dotted lines. The insensitive shading factors are automatically computed as: [INSENSITIVE] = ( [NORMAL] + 1.0 ) / 2.0 .. unless you explicitly set the shading factor for the insensitive state. The pixmap remapping code had to be changed to not blend too much. I also cleanup up insensitive rendering here and there and changed the arrow code to use the foreground color. * Scrollbars smaller than their requisitions now have smaller buttons instead of just being a mess. I also added a configurable variable "scrollbar_flush" that when true makes the scrollbars borderless, just to test a borderless scrollbar for the shortcut-bar in Gentoo. * Modified remapping code to use a XYZ color space instead of HSL.. Smaller, faster. Xenophilia-0.4: Structure: * Changed license to GNU Library General Public License (LGPL). * Removed the XenoSephia and the pixmap configurations. New options: * Styles can now be in "thin" mode. Within the 'engine "xeno" { ... }' closure in the gtkrc file, set "thin = true". (or "thin = false" if you want). The option does now also cascade like all other "xeno" options. * The "shade" and "shine" factors can now be set for every state the way you set colors and pixmaps for different states using subscripts, i.e. "shine [INSENSITIVE] = 0.5". You can still use the old syntax. * There is a larger selection of knobs for the scrollbar, handle box and resize bar (GtkPaned). scrollbar_knob = none | dimple | lines | holes | buds handle_knob = false | lines | holes | buds paned_knob = false | dimple | lines | holes | buds Use of "false" or "none" will use the default settings. The old syntax for setting scrollbar parameters still apply. See Xenophilia/README.html for a long description. * You can now enable/disable the box around the scrollbar arrows. This is not because of any UI design principle, just an Amiga-ism. Visual changes: * GtkCombo: The popup button is now inside the entry to make it visual that they behave as one widget and not two. * All arrows wrapped within buttons are now drawn in the foreground color, i.e. all arrows that could be seen as labels using a symbol font are now drawn that way. Arrows who are themselves buttons are drawn with button frames. Small changes: * Pixmap remapping code can now remap using a conditional code for thin mode. * Modified black arrow drawing routine a little bit. * Popup windows now have thick frames. Bug fixes: * Does now restore patched functions who have found their way into subclasses. * A little more stable when previewing themes in the GNOME theme selector. There are still a few things done by the patches that can not be solved, but at least they do not cause the theme selector to crash. Other themes who have patches can still crash your theme selector and other GNOME programs when switching theme to or from them. Thanks to Mads Villadsen for reporting the bug! Xenophilia-0.3: Bug fixes: * Fixed trough click bug. I did not use the new GtkStep 1.7 code as I had changed so much in the scrollbar code already. * Fixed position bug when scrollbar was max size. Code changes: * Notebook tab corners are now antialiased. Small changes: * Cleaned up background pixmap code. * Dotted focus frames are now perfect. * Toolbars look better in GNOME. * Polygon drawing code changed again. Xenophilia-0.2: New stuff: * I modified the scrollbar code a little bit and gave it options. See the more user-friendly changelog "NEWS". * Added "shine" and "shade" options. * Added an experimental "thin" mode. Set "thin = true" in rc file to use. Don't mix thin and non-thin frames. That would be ugly. Bug fixes: * The character '6' in the font was 2064 pixels wide, which made windows that contained the character very wide. Quite a few people have reported this bug. Not all of you traced it back to the font, though. * Cleaned up checkbutton, checkmenuitem and radiomenuitem image code. Now also use antialiased remapped images, and the PRELIGHT state. That old code should not have been released in the first place. * Notebook tab backgrounds are now drawn correctly. (Re)implemented support for background pixmaps: * A background pixmap for a widget will not be used if the style's background color does not match the background color in the rc style. I.e. when the program sets a color, it overrides the settings in the rc style. * "buttondefault" does not use the button's background pixmaps. * I included a quick'n dirty python script that creates horizontal and vertical gradient xpms, together with a "gradients" make target and a sample gtkrc. You can use it without themes. Not an engine feature. Code changes: * There can now be more than one instance of an internal image, remapped to different colors. It should work for both named widgets as well as program- modified styles. In the rc file, the "engine" clause is not required. * Modified the GtkPaned patches a little bit. Use arrow cursors instead of the cross cursor, don't draw on the border and don't cover children. Minor changes: * Implemented xeno_draw_diamond(). Now 100% of what the theme renders is my code, and it is looking pretty sweet too. =) I want to implement xeno_draw_cross and xeno_draw_oval, but I don't know how because it is not even implemented in GTK+. * Reduced pixel-scale overdraw in polygon routine. * Shaved off a few pixels from the submenu arrow. * Unnoticable change in stippled focus frame rendering. * Cleaned up handle box code. * Added some contrast. * Removed the sticky pin image and replaced it with ye olde arrow. It was too ugly. Xenophilia-0.1: * First release. Friday June 25, 1999. Appeared on gtk.themes.org, Thursday July 1. (?) Changes from GtkStep 1.5: * Much better polygon and arrow drawing code. Almost everything is now drawn using the new polygon routine. * Most pixmaps used have been hand-drawn/calculated, and are remapped at runtime to the user's colors. * Recessed bevels are drawn using the pens of the parent widget. * The frame around "Default" buttons has the same width in all directions. * Noninteractive widgets like progress and status bars, frames and rulers are drawn with thin borders so as not to invite interaction. * Flat progress bar. It is not structural, and it can not be manipulated. * Frame titles are beveled. They are not widget labels. It also looks better, borrowed from MUI on Amiga. * Ghosted widgets are drawn in a semi-transparent look. This includes spinbutton arrows. In the original GTK look, insensitive widgets only have their labels different, except for images. * Torn-off menus are drawn as windows/menu bars. * Less space between scrollbar and viewport. The original space was larger than the space that most programs use between their other widgets. That could give the impression that the scrollbar did not belong to the viewport, but to another widget. * Non-editable Entry widgets are drawn with the insensitive "base" color. * Menuitems are recessed when prelighted, as _releasing_ a menu item is what activates it, not pressing it. * New consistent checkmark and radio buttons. Bevelled down when selected, beveled up otherwise. * New softer frames. The drawback is that I use both white and black. * Scrollbar and menu arrows are black. * Pressed-down buttons look pressed down, not inverted. This includes the scrollbar buttons. * Notebook tabs are rounded. * Borderless toolbar buttons are drawn as in Netscape Navigator, * Windows have thin frames. This may look ugly with some programs that don't set any border between children and the window. I hack those. How about you? =) * Menu bars and lines are drawn thin to fit the window style. * The "mid" color is used extensivelly. * Tooltips' have a slight 3D'ness, but they do not look like buttons. * Checkmarks, radio buttons and toggle buttons use the "base" color when selected. * Entry and slider widgets have their focus frame drawn on the inside. * Notebook tabs, checkmarks and radio buttons have dotted focus frames. * Sliders have more lines. ... plus countless other things I have not bothered to write down.