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