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_CHROME_GTK_FRAME_H_
6#define CHROME_BROWSER_UI_GTK_CHROME_GTK_FRAME_H_
7#pragma once
8
9#include <gdk/gdk.h>
10#include <gtk/gtkwindow.h>
11
12G_BEGIN_DECLS
13
14// This file declares two subclasses of GtkWindow for easier gtk+ theme
15// integration.
16//
17// The first is "MetaFrames," which is (was?) the name of a gobject class in
18// the metacity window manager. To actually get at those values, we need to
19// have an object whose gobject class name string matches the definitions in
20// the gtkrc file. MetaFrames derives from GtkWindow.
21//
22// Metaframes can not be instantiated. It has no constructor; instantiate
23// ChromeGtkFrame instead.
24typedef struct _MetaFrames       MetaFrames;
25typedef struct _MetaFramesClass  MetaFramesClass;
26
27struct _MetaFrames {
28  GtkWindow window;
29};
30
31struct _MetaFramesClass {
32  GtkWindowClass parent_class;
33};
34
35
36// The second is ChromeGtkFrame, which defines a number of optional style
37// properties so theme authors can control how chromium appears in gtk-theme
38// mode.  It derives from MetaFrames in chrome so older themes that declare a
39// MetaFrames theme will still work. New themes should target this class.
40typedef struct _ChromeGtkFrame       ChromeGtkFrame;
41typedef struct _ChromeGtkFrameClass  ChromeGtkFrameClass;
42
43struct _ChromeGtkFrame {
44  MetaFrames frames;
45};
46
47struct _ChromeGtkFrameClass {
48  MetaFramesClass frames_class;
49};
50
51// Creates a GtkWindow object the the class name "ChromeGtkFrame".
52GtkWidget* chrome_gtk_frame_new();
53
54G_END_DECLS
55
56#endif  // CHROME_BROWSER_UI_GTK_CHROME_GTK_FRAME_H_
57