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