| Index: chrome/browser/ui/gtk/gtk_chrome_shrinkable_hbox.h
|
| diff --git a/chrome/browser/ui/gtk/gtk_chrome_shrinkable_hbox.h b/chrome/browser/ui/gtk/gtk_chrome_shrinkable_hbox.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bfae72e0cbb880da592013a04d1ca602fc20da05
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/gtk/gtk_chrome_shrinkable_hbox.h
|
| @@ -0,0 +1,87 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CHROME_BROWSER_UI_GTK_GTK_CHROME_SHRINKABLE_HBOX_H_
|
| +#define CHROME_BROWSER_UI_GTK_GTK_CHROME_SHRINKABLE_HBOX_H_
|
| +#pragma once
|
| +
|
| +#include <gdk/gdk.h>
|
| +#include <gtk/gtk.h>
|
| +
|
| +// A specialized container derived from GtkHBox, which can shrink or hide its
|
| +// children one by one to fit into its width.
|
| +//
|
| +// Limitations of this container:
|
| +// - All children should have the same pack type, otherwise they may be
|
| +// overlapped with each other.
|
| +// - All children must be packed with expand == false and fill == false,
|
| +// otherwise they may be overlapped with each other.
|
| +// - The visibility of a child is adjusted automatically according to the
|
| +// container's width. The child may not show or hide itself.
|
| +
|
| +G_BEGIN_DECLS
|
| +
|
| +#define GTK_TYPE_CHROME_SHRINKABLE_HBOX \
|
| + (gtk_chrome_shrinkable_hbox_get_type())
|
| +#define GTK_CHROME_SHRINKABLE_HBOX(obj) \
|
| + (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_CHROME_SHRINKABLE_HBOX, \
|
| + GtkChromeShrinkableHBox))
|
| +#define GTK_CHROME_SHRINKABLE_HBOX_CLASS(klass) \
|
| + (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_CHROME_SHRINKABLE_HBOX, \
|
| + GtkChromeShrinkableHBoxClass))
|
| +#define GTK_IS_CHROME_SHRINKABLE_HBOX(obj) \
|
| + (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_CHROME_SHRINKABLE_HBOX))
|
| +#define GTK_IS_CHROME_SHRINKABLE_HBOX_CLASS(klass) \
|
| + (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_CHROME_SHRINKABLE_HBOX))
|
| +#define GTK_CHROME_SHRINKABLE_HBOX_GET_CLASS(obj) \
|
| + (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_CHROME_SHRINKABLE_HBOX, \
|
| + GtkChromeShrinkableHBoxClass))
|
| +
|
| +typedef struct _GtkChromeShrinkableHBox GtkChromeShrinkableHBox;
|
| +typedef struct _GtkChromeShrinkableHBoxClass GtkChromeShrinkableHBoxClass;
|
| +
|
| +struct _GtkChromeShrinkableHBox {
|
| + // Parent class.
|
| + GtkHBox hbox;
|
| +
|
| + gboolean hide_child_directly;
|
| +
|
| + // Private
|
| + int children_width_requisition;
|
| +};
|
| +
|
| +struct _GtkChromeShrinkableHBoxClass {
|
| + GtkHBoxClass parent_class;
|
| +};
|
| +
|
| +GType gtk_chrome_shrinkable_hbox_get_type() G_GNUC_CONST;
|
| +
|
| +// Creates a new shrinkable hbox.
|
| +// If |hide_child_directly| is true then its child widgets will be hid directly
|
| +// if they are too wide to be fit into the hbox's width. Otherwise they will be
|
| +// shrunk first before being hid completely.
|
| +GtkWidget* gtk_chrome_shrinkable_hbox_new(gboolean hide_child_directly,
|
| + gboolean homogeneous,
|
| + gint spacing);
|
| +
|
| +void gtk_chrome_shrinkable_hbox_set_hide_child_directly(
|
| + GtkChromeShrinkableHBox* box, gboolean hide_child_directly);
|
| +
|
| +gboolean gtk_chrome_shrinkable_hbox_get_hide_child_directly(
|
| + GtkChromeShrinkableHBox* box);
|
| +
|
| +void gtk_chrome_shrinkable_hbox_pack_start(GtkChromeShrinkableHBox* box,
|
| + GtkWidget* child,
|
| + guint padding);
|
| +
|
| +void gtk_chrome_shrinkable_hbox_pack_end(GtkChromeShrinkableHBox* box,
|
| + GtkWidget* child,
|
| + guint padding);
|
| +
|
| +gint gtk_chrome_shrinkable_hbox_get_visible_child_count(
|
| + GtkChromeShrinkableHBox* box);
|
| +
|
| +G_END_DECLS
|
| +
|
| +#endif // CHROME_BROWSER_UI_GTK_GTK_CHROME_SHRINKABLE_HBOX_H_
|
|
|