gtkscrolledwindow.h 8.2 KB
Newer Older
Cody Russell's avatar
Cody Russell committed
1
/* GTK - The GIMP Toolkit
Elliot Lee's avatar
Elliot Lee committed
2 3 4
 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
 *
 * This library is free software; you can redistribute it and/or
5
 * modify it under the terms of the GNU Lesser General Public
Elliot Lee's avatar
Elliot Lee committed
6 7 8 9 10 11
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
 * Lesser General Public License for more details.
Elliot Lee's avatar
Elliot Lee committed
13
 *
14
 * You should have received a copy of the GNU Lesser General Public
Javier Jardón's avatar
Javier Jardón committed
15
 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
Elliot Lee's avatar
Elliot Lee committed
16
 */
17 18

/*
19
 * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
20 21
 * file for a list of people on the GTK+ Team.  See the ChangeLog
 * files for a list of changes.  These files are distributed with
22
 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
23 24
 */

25 26 27
#ifndef __GTK_SCROLLED_WINDOW_H__
#define __GTK_SCROLLED_WINDOW_H__

28
#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
29 30 31
#error "Only <gtk/gtk.h> can be included directly."
#endif

32
#include <gtk/gtkbin.h>
Elliot Lee's avatar
Elliot Lee committed
33

34
G_BEGIN_DECLS
Elliot Lee's avatar
Elliot Lee committed
35 36


37
#define GTK_TYPE_SCROLLED_WINDOW            (gtk_scrolled_window_get_type ())
Manish Singh's avatar
Manish Singh committed
38 39 40 41 42
#define GTK_SCROLLED_WINDOW(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SCROLLED_WINDOW, GtkScrolledWindow))
#define GTK_SCROLLED_WINDOW_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_SCROLLED_WINDOW, GtkScrolledWindowClass))
#define GTK_IS_SCROLLED_WINDOW(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SCROLLED_WINDOW))
#define GTK_IS_SCROLLED_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_SCROLLED_WINDOW))
#define GTK_SCROLLED_WINDOW_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_SCROLLED_WINDOW, GtkScrolledWindowClass))
Tim Janik's avatar
Tim Janik committed
43

Elliot Lee's avatar
Elliot Lee committed
44

45 46 47
typedef struct _GtkScrolledWindow              GtkScrolledWindow;
typedef struct _GtkScrolledWindowPrivate       GtkScrolledWindowPrivate;
typedef struct _GtkScrolledWindowClass         GtkScrolledWindowClass;
Elliot Lee's avatar
Elliot Lee committed
48 49 50

struct _GtkScrolledWindow
{
51
  GtkBin container;
Elliot Lee's avatar
Elliot Lee committed
52

53
  GtkScrolledWindowPrivate *priv;
Elliot Lee's avatar
Elliot Lee committed
54 55
};

56 57 58 59 60 61 62 63 64
/**
 * GtkScrolledWindowClass:
 * @parent_class: The parent class.
 * @scrollbar_spacing: 
 * @scroll_child: Keybinding signal which gets emitted when a
 *    keybinding that scrolls is pressed.
 * @move_focus_out: Keybinding signal which gets emitted when focus is
 *    moved away from the scrolled window by a keybinding.
 */
Elliot Lee's avatar
Elliot Lee committed
65 66
struct _GtkScrolledWindowClass
{
67
  GtkBinClass parent_class;
68

69
  gint scrollbar_spacing;
70

71 72
  /*< public >*/

73 74 75 76 77 78 79
  /* Action signals for keybindings. Do not connect to these signals
   */

  /* Unfortunately, GtkScrollType is deficient in that there is
   * no horizontal/vertical variants for GTK_SCROLL_START/END,
   * so we have to add an additional boolean flag.
   */
80 81 82
  gboolean (*scroll_child) (GtkScrolledWindow *scrolled_window,
	  		    GtkScrollType      scroll,
			    gboolean           horizontal);
83 84 85

  void (* move_focus_out) (GtkScrolledWindow *scrolled_window,
			   GtkDirectionType   direction);
86

87 88
  /*< private >*/

89 90 91 92 93
  /* Padding for future expansion */
  void (*_gtk_reserved1) (void);
  void (*_gtk_reserved2) (void);
  void (*_gtk_reserved3) (void);
  void (*_gtk_reserved4) (void);
Elliot Lee's avatar
Elliot Lee committed
94 95 96
};


Matthias Clasen's avatar
Matthias Clasen committed
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
/**
 * GtkCornerType:
 * @GTK_CORNER_TOP_LEFT: Place the scrollbars on the right and bottom of the
 *  widget (default behaviour).
 * @GTK_CORNER_BOTTOM_LEFT: Place the scrollbars on the top and right of the
 *  widget.
 * @GTK_CORNER_TOP_RIGHT: Place the scrollbars on the left and bottom of the
 *  widget.
 * @GTK_CORNER_BOTTOM_RIGHT: Place the scrollbars on the top and left of the
 *  widget.
 *
 * Specifies which corner a child widget should be placed in when packed into
 * a #GtkScrolledWindow. This is effectively the opposite of where the scroll
 * bars are placed.
 */
typedef enum
{
  GTK_CORNER_TOP_LEFT,
  GTK_CORNER_BOTTOM_LEFT,
  GTK_CORNER_TOP_RIGHT,
  GTK_CORNER_BOTTOM_RIGHT
} GtkCornerType;


/**
 * GtkPolicyType:
123 124 125 126 127 128
 * @GTK_POLICY_ALWAYS: The scrollbar is always visible. The view size is
 *  independent of the content.
 * @GTK_POLICY_AUTOMATIC: The scrollbar will appear and disappear as necessary.
 *  For example, when all of a #GtkTreeView can not be seen.
 * @GTK_POLICY_NEVER: The scrollbar should never appear. In this mode the
 *  content determines the size.
Matthias Clasen's avatar
Matthias Clasen committed
129
 *
130 131
 * Determines how the size should be computed to achieve the one of the
 * visibility mode for the scrollbars.
Matthias Clasen's avatar
Matthias Clasen committed
132 133 134 135 136 137 138 139 140
 */
typedef enum
{
  GTK_POLICY_ALWAYS,
  GTK_POLICY_AUTOMATIC,
  GTK_POLICY_NEVER
} GtkPolicyType;


141
GDK_AVAILABLE_IN_ALL
Manish Singh's avatar
Manish Singh committed
142
GType          gtk_scrolled_window_get_type          (void) G_GNUC_CONST;
143
GDK_AVAILABLE_IN_ALL
144 145
GtkWidget*     gtk_scrolled_window_new               (GtkAdjustment     *hadjustment,
						      GtkAdjustment     *vadjustment);
146
GDK_AVAILABLE_IN_ALL
147 148
void           gtk_scrolled_window_set_hadjustment   (GtkScrolledWindow *scrolled_window,
						      GtkAdjustment     *hadjustment);
149
GDK_AVAILABLE_IN_ALL
150
void           gtk_scrolled_window_set_vadjustment   (GtkScrolledWindow *scrolled_window,
151
						      GtkAdjustment     *vadjustment);
152
GDK_AVAILABLE_IN_ALL
153
GtkAdjustment* gtk_scrolled_window_get_hadjustment   (GtkScrolledWindow *scrolled_window);
154
GDK_AVAILABLE_IN_ALL
155
GtkAdjustment* gtk_scrolled_window_get_vadjustment   (GtkScrolledWindow *scrolled_window);
156
GDK_AVAILABLE_IN_ALL
157
GtkWidget*     gtk_scrolled_window_get_hscrollbar    (GtkScrolledWindow *scrolled_window);
158
GDK_AVAILABLE_IN_ALL
159
GtkWidget*     gtk_scrolled_window_get_vscrollbar    (GtkScrolledWindow *scrolled_window);
160
GDK_AVAILABLE_IN_ALL
161 162 163
void           gtk_scrolled_window_set_policy        (GtkScrolledWindow *scrolled_window,
						      GtkPolicyType      hscrollbar_policy,
						      GtkPolicyType      vscrollbar_policy);
164
GDK_AVAILABLE_IN_ALL
165 166
void           gtk_scrolled_window_get_policy        (GtkScrolledWindow *scrolled_window,
						      GtkPolicyType     *hscrollbar_policy,
167
						      GtkPolicyType     *vscrollbar_policy);
168
GDK_AVAILABLE_IN_ALL
169 170
void           gtk_scrolled_window_set_placement     (GtkScrolledWindow *scrolled_window,
						      GtkCornerType      window_placement);
171
GDK_AVAILABLE_IN_ALL
172 173
void           gtk_scrolled_window_unset_placement   (GtkScrolledWindow *scrolled_window);

174
GDK_AVAILABLE_IN_ALL
175
GtkCornerType  gtk_scrolled_window_get_placement     (GtkScrolledWindow *scrolled_window);
176
GDK_AVAILABLE_IN_ALL
177 178
void           gtk_scrolled_window_set_shadow_type   (GtkScrolledWindow *scrolled_window,
						      GtkShadowType      type);
179
GDK_AVAILABLE_IN_ALL
180
GtkShadowType  gtk_scrolled_window_get_shadow_type   (GtkScrolledWindow *scrolled_window);
181
GDK_DEPRECATED_IN_3_8_FOR(gtk_container_add)
182 183 184
void	       gtk_scrolled_window_add_with_viewport (GtkScrolledWindow *scrolled_window,
						      GtkWidget		*child);

185
GDK_AVAILABLE_IN_ALL
186
gint           gtk_scrolled_window_get_min_content_width  (GtkScrolledWindow *scrolled_window);
187
GDK_AVAILABLE_IN_ALL
188 189
void           gtk_scrolled_window_set_min_content_width  (GtkScrolledWindow *scrolled_window,
                                                           gint               width);
190
GDK_AVAILABLE_IN_ALL
191
gint           gtk_scrolled_window_get_min_content_height (GtkScrolledWindow *scrolled_window);
192
GDK_AVAILABLE_IN_ALL
193 194
void           gtk_scrolled_window_set_min_content_height (GtkScrolledWindow *scrolled_window,
                                                           gint               height);
195 196 197 198 199 200 201 202 203 204 205
GDK_AVAILABLE_IN_3_4
void           gtk_scrolled_window_set_kinetic_scrolling  (GtkScrolledWindow        *scrolled_window,
                                                           gboolean                  kinetic_scrolling);
GDK_AVAILABLE_IN_3_4
gboolean       gtk_scrolled_window_get_kinetic_scrolling  (GtkScrolledWindow        *scrolled_window);

GDK_AVAILABLE_IN_3_4
void           gtk_scrolled_window_set_capture_button_press (GtkScrolledWindow      *scrolled_window,
                                                             gboolean                capture_button_press);
GDK_AVAILABLE_IN_3_4
gboolean       gtk_scrolled_window_get_capture_button_press (GtkScrolledWindow      *scrolled_window);
206

207
gint _gtk_scrolled_window_get_scrollbar_spacing (GtkScrolledWindow *scrolled_window);
Elliot Lee's avatar
Elliot Lee committed
208

209 210

G_END_DECLS
Elliot Lee's avatar
Elliot Lee committed
211 212 213


#endif /* __GTK_SCROLLED_WINDOW_H__ */