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