+/**
+ * GtkWidgetClass:
+ * @parent_class: The object class structure needs to be the first
+ * element in the widget class structure in order for the class mechanism
+ * to work correctly. This allows a GtkWidgetClass pointer to be cast to
+ * a GObjectClass pointer.
+ * @activate_signal: The signal to emit when a widget of this class is
+ * activated, gtk_widget_activate() handles the emission.
+ * Implementation of this signal is optional.
+ * @get_request_mode: This allows a widget to tell its parent container whether
+ * it prefers to be allocated in %GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH or
+ * %GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT mode.
+ * %GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH means the widget prefers to have
+ * #GtkWidgetClass.get_preferred_width() called and then
+ * #GtkWidgetClass.get_preferred_height_for_width().
+ * %GTK_SIZE_REQUEST_CONSTANT_SIZE disables any height-for-width or
+ * width-for-height geometry management for a said widget and is the
+ * default return.
+ * It's important to note (as described below) that any widget
+ * which trades height-for-width or width-for-height must respond properly
+ * to both of the virtual methods #GtkWidgetClass.get_preferred_height_for_width()
+ * and #GtkWidgetClass.get_preferred_width_for_height() since it might be
+ * queried in either #GtkSizeRequestMode by its parent container.
+ * @get_preferred_height: This is called by containers to obtain the minimum
+ * and natural height of a widget. A widget that does not actually trade
+ * any height for width or width for height only has to implement these
+ * two virtual methods (#GtkWidgetClass.get_preferred_width() and
+ * #GtkWidgetClass.get_preferred_height()).
+ * @get_preferred_width_for_height: This is analogous to
+ * #GtkWidgetClass.get_preferred_height_for_width() except that it
+ * operates in the oposite orientation. It's rare that a widget actually
+ * does %GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT requests but this can happen
+ * when, for example, a widget or container gets additional columns to
+ * compensate for a smaller allocated height.
+ * @get_preferred_width: This is called by containers to obtain the minimum
+ * and natural width of a widget. A widget will never be allocated a width
+ * less than its minimum and will only ever be allocated a width greater
+ * than the natural width once all of the said widget's siblings have
+ * received their natural widths.
+ * Furthermore, a widget will only ever be allocated a width greater than
+ * its natural width if it was configured to receive extra expand space
+ * from its parent container.
+ * @get_preferred_height_for_width: This is similar to
+ * #GtkWidgetClass.get_preferred_height() except that it is passed a
+ * contextual width to request height for. By implementing this virtual
+ * method it is possible for a #GtkLabel to tell its parent how much height
+ * would be required if the label were to be allocated a said width.
+ * @adjust_size_request: Convert an initial size request from a widget's
+ * #GtkSizeRequestMode virtual method implementations into a size request to
+ * be used by parent containers in laying out the widget.
+ * adjust_size_request adjusts <emphasis>from</emphasis> a child widget's
+ * original request <emphasis>to</emphasis> what a parent container should
+ * use for layout. The @for_size argument will be -1 if the request should
+ * not be for a particular size in the opposing orientation, i.e. if the
+ * request is not height-for-width or width-for-height. If @for_size is
+ * greater than -1, it is the proposed allocation in the opposing
+ * orientation that we need the request for. Implementations of
+ * adjust_size_request should chain up to the default implementation,
+ * which applies #GtkWidget's margin properties and imposes any values
+ * from gtk_widget_set_size_request(). Chaining up should be last,
+ * <emphasis>after</emphasis> your subclass adjusts the request, so
+ * #GtkWidget can apply constraints and add the margin properly.
+ * @adjust_size_allocation: Convert an initial size allocation assigned
+ * by a #GtkContainer using gtk_widget_size_allocate(), into an actual
+ * size allocation to be used by the widget. adjust_size_allocation
+ * adjusts <emphasis>to</emphasis> a child widget's actual allocation
+ * <emphasis>from</emphasis> what a parent container computed for the
+ * child. The adjusted allocation must be entirely within the original
+ * allocation. In any custom implementation, chain up to the default
+ * #GtkWidget implementation of this method, which applies the margin
+ * and alignment properties of #GtkWidget. Chain up
+ * <emphasis>before</emphasis> performing your own adjustments so your
+ * own adjustments remove more allocation after the #GtkWidget base
+ * class has already removed margin and alignment. The natural size
+ * passed in should be adjusted in the same way as the allocated size,
+ * which allows adjustments to perform alignments or other changes
+ * based on natural size.
+ */