A simple subclass of GtkActionGroup that adds a merge priority member.


A subclass of Drawer that encapsulates the behavior typically required when using the drawer to implement a menu or toolbar that auto-opens when moused-over and auto-closes when the mouse leaves.


A GtkHBox subclass that draws its background using the base color for the current state. This respects the theme. It even works around several bugs encountered with themes such as Crux, Smokey-Blue, and gtk-qt-engine.

See the screenshots for Header for examples.


A GtkBin subclass that manages its own visibility based on whether its child (or its child's children, or their children, etc.) has actual content to show. Normally, if you have a container widget with a border and invisible children, the border will still exist. If the container is inside of a GtkBin, however, the border will disappear once the children are invisible.

Basically, there are widgets that provide actual content to show, and widgets that simply lay out other widgets. There is no point in laying out content that does not exist. GTK+ does not handle this well, and ContentBox remedies this by providing a generic "insert-and-forget" solution which allows developers to focus on other things.


The DeadEntry is an entry field that greys out when no longer editable. Unlike a standard GtkEntry, the DeadEntry makes it quite clear that you cannot edit it. The user can continue to select and copy from the entry's contents.


The drawer is a widget that can open and close smoothly over other widgets. This can be useful for toolbars in full-screen mode. Media players and web browsers in full-screen mode are good applications of this widget.


The FieldEntry widget is a standard GtkEntry with the ability to separate content into different fields. Each field is separated by a delimiter. Validation happens on every key press and ensures that the content doesn't contain any characters that don't belong. The entry is designed to not get in your way. Copying and pasting also just work between entries and other programs on the system.


Header provides a bar containing a string of text. The bar respects the user's theme. This accompanies the BaseBGBox widget. See those screenshots for examples of this widget.

BaseBGBox and Header with ClearLooks BaseBGBox and Header with Grand-Canyon BaseBGBox and Header with Smokey-Blue BaseBGBox and Header with Thinice

The IPEntry is an IP entry widget based on FieldEntry. Unlike most IP entry widgets, this one is designed to work without getting in your way. Like FieldEntry, copying and pasting just works, and the fields are validated for correct input.


MenuToggleAction is a GtkToggleAction subclass for connecting a menu to a toggle action. If the action is represented as a button, right-clicking will pop up the menu. If in menu form, it will display the menu as a submenu of the action.


MotionTracker is a libsigc++ signal object that will emit whenever the widget it is tracking moves. GTK+ does not provide a good signal for this, so we provide our own.

As the motion tracker is just a specialized signal, it can be added as a member of a widget class so that motion notification appears as just another notifiable event on the widget.

If the target happens to disappear while the tracker is still alive, it will completely disconnect itself from all windows and become inert.


Reparenter is an object that helps to work around several bugs encountered with using gtk_widget_reparent(). See the comment at the top of libview/ for a detailed description of the problem and solution.


A GtkAction that allows a Spinner to be inserted into a toolbar using GtkUIManager. This action handles the loading of the animation frames and propagating frame changes to all proxy widgets. Policy for when the frame changes is left up to consumers/subclasses of the action.


The Spinner widget, also known as a "throbber," is an animated image that animates usually according to activity. This widget is very lightweight, as we expect multiple instances to be linked to a single SpinnerAction. The widget only defines the mechanics of switching frames. Loading the frames and setting an animation policy is left to the action.

This widget is useful for web browsers.


A tooltip look-alike widget that can be shown on demand. This looks like a standard GtkTooltip, but can be used anywhere and shown at any time.


The UIGroup object encapsulates a UI Definition fragment for GtkUIManager that would normally need to be created manually through XML markup. Instead of dealing with the XML, users of UIGroup can programmatically add items to the GtkUIManager and at any point merge and unmerge the entire group.


A GtkTextView subclass that has built-in support for Undo and Redo.


A GtkViewport subclass that works around some bugs some versions of GtkViewport has in its size_request handler.


A GtkBin subclass whose driven dimension is a function of its driving dimension.


A GtkLabel subclass that can wrap to any width, unlike GtkLabel which has a fixed wrap point. It does this through a couple of tricks in the size_allocate and size_request handlers by using PangoLayout's height-for-width.