Home | History | Annotate | Download | only in gtk
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef UI_BASE_GTK_GTK_EXPANDED_CONTAINER_H_
      6 #define UI_BASE_GTK_GTK_EXPANDED_CONTAINER_H_
      7 
      8 #include <gdk/gdk.h>
      9 #include <gtk/gtk.h>
     10 
     11 #include "ui/base/ui_export.h"
     12 
     13 // A specialized container derived from GtkFixed, which expands the size of its
     14 // children to fill the container, in one or both directions. The usage of this
     15 // container is similar to GtkFixed.
     16 //
     17 // The "child-size-request" signal is optional, if you want to expand child
     18 // widgets to customized size other than the container's size. It should have
     19 // the following signature:
     20 //
     21 //   void (*child_size_request)(GtkExpandedContainer* container,
     22 //                              GtkWidget* child,
     23 //                              GtkRequisition* requisition);
     24 //
     25 // This signal is emitted for each child with the requisition set to the size of
     26 // the container. Your handler may adjust the value of the requisition. If the
     27 // width or height is set to -1, then that direction will not be expanded, and
     28 // the original size request of the child will be used.
     29 
     30 G_BEGIN_DECLS
     31 
     32 #define GTK_TYPE_EXPANDED_CONTAINER                                 \
     33     (gtk_expanded_container_get_type())
     34 #define GTK_EXPANDED_CONTAINER(obj)                                 \
     35     (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_EXPANDED_CONTAINER, \
     36                                 GtkExpandedContainer))
     37 #define GTK_EXPANDED_CONTAINER_CLASS(klass)                         \
     38     (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_EXPANDED_CONTAINER,  \
     39                              GtkExpandedContainerClass))
     40 #define GTK_IS_EXPANDED_CONTAINER(obj)                              \
     41     (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_EXPANDED_CONTAINER))
     42 #define GTK_IS_EXPANDED_CONTAINER_CLASS(klass)                      \
     43     (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_EXPANDED_CONTAINER))
     44 #define GTK_EXPANDED_CONTAINER_GET_CLASS(obj)                       \
     45     (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_EXPANDED_CONTAINER,  \
     46                                GtkExpandedContainerClass))
     47 
     48 typedef struct _GtkExpandedContainer GtkExpandedContainer;
     49 typedef struct _GtkExpandedContainerClass GtkExpandedContainerClass;
     50 
     51 struct _GtkExpandedContainer {
     52   // Parent class.
     53   GtkFixed fixed;
     54 };
     55 
     56 struct _GtkExpandedContainerClass {
     57   GtkFixedClass parent_class;
     58 };
     59 
     60 UI_EXPORT GType gtk_expanded_container_get_type() G_GNUC_CONST;
     61 UI_EXPORT GtkWidget* gtk_expanded_container_new();
     62 UI_EXPORT void gtk_expanded_container_put(GtkExpandedContainer* container,
     63                                           GtkWidget* widget, gint x, gint y);
     64 UI_EXPORT void gtk_expanded_container_move(GtkExpandedContainer* container,
     65                                            GtkWidget* widget, gint x, gint y);
     66 UI_EXPORT void gtk_expanded_container_set_has_window(
     67     GtkExpandedContainer* container,
     68     gboolean has_window);
     69 UI_EXPORT gboolean gtk_expanded_container_get_has_window(
     70     GtkExpandedContainer* container);
     71 
     72 G_END_DECLS
     73 
     74 #endif  // UI_BASE_GTK_GTK_EXPANDED_CONTAINER_H_
     75