2
* Copyright © 2008 Christian Persch
4
* This library is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Library General Public
6
* License as published by the Free Software Foundation; either
7
* version 2 of the License, or (at your option) any later version.
9
* This library is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* Library General Public License for more details.
14
* You should have received a copy of the GNU Library General Public
15
* License along with this library; if not, write to the
16
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17
* Boston, MA 02111-1307, USA.
23
#include "terminal-screen-container.h"
25
#define SCREEN_DATA_KEY "TSC::Screen"
26
#define SCROLLBAR_DATA_KEY "TSC::Scrollbar"
29
terminal_screen_container_new (TerminalScreen *screen)
31
#ifdef USE_SCROLLED_WINDOW
32
GtkWidget *scrolled_window;
34
g_return_val_if_fail (TERMINAL_IS_SCREEN (screen), NULL);
36
scrolled_window = gtk_scrolled_window_new (NULL, vte_terminal_get_adjustment (VTE_TERMINAL (screen)));
37
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
39
GTK_POLICY_AUTOMATIC);
40
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
42
gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (screen));
43
gtk_widget_show (GTK_WIDGET (screen));
45
_terminal_screen_update_scrollbar (screen);
46
return scrolled_window;
48
GtkWidget *hbox, *scrollbar;
50
g_return_val_if_fail (TERMINAL_IS_SCREEN (screen), NULL);
52
hbox = gtk_hbox_new (FALSE, 0);
54
scrollbar = gtk_vscrollbar_new (vte_terminal_get_adjustment (VTE_TERMINAL (screen)));
56
gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (screen), TRUE, TRUE, 0);
57
gtk_box_pack_start (GTK_BOX (hbox), scrollbar, FALSE, FALSE, 0);
59
g_object_set_data (G_OBJECT (hbox), SCREEN_DATA_KEY, screen);
60
g_object_set_data (G_OBJECT (hbox), SCROLLBAR_DATA_KEY, scrollbar);
62
gtk_widget_show_all (hbox);
64
_terminal_screen_update_scrollbar (screen);
70
terminal_screen_container_get_screen (GtkWidget *container)
72
#ifdef USE_SCROLLED_WINDOW
73
g_return_val_if_fail (GTK_IS_SCROLLED_WINDOW (container), NULL);
75
return TERMINAL_SCREEN (gtk_bin_get_child (GTK_BIN (container)));
77
g_return_val_if_fail (GTK_IS_HBOX (container), NULL);
79
return TERMINAL_SCREEN (g_object_get_data (G_OBJECT (container), SCREEN_DATA_KEY));
83
#ifndef USE_SCROLLED_WINDOW
85
terminal_screen_container_get_scrollbar (GtkWidget *container)
87
return g_object_get_data (G_OBJECT (container), SCROLLBAR_DATA_KEY);
92
terminal_screen_container_set_policy (GtkWidget *container,
93
GtkPolicyType hpolicy G_GNUC_UNUSED,
94
GtkPolicyType vpolicy)
96
#ifdef USE_SCROLLED_WINDOW
97
g_return_if_fail (GTK_IS_SCROLLED_WINDOW (container));
99
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (container), hpolicy, vpolicy);
101
GtkWidget *scrollbar;
103
g_return_if_fail (GTK_IS_HBOX (container));
105
scrollbar = terminal_screen_container_get_scrollbar (container);
107
case GTK_POLICY_NEVER:
108
gtk_widget_hide (scrollbar);
110
case GTK_POLICY_AUTOMATIC:
111
case GTK_POLICY_ALWAYS:
112
gtk_widget_show (scrollbar);
119
terminal_screen_container_set_placement (GtkWidget *container,
120
GtkCornerType corner)
122
#ifdef USE_SCROLLED_WINDOW
123
g_return_if_fail (GTK_IS_SCROLLED_WINDOW (container));
125
gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (container), corner);
127
GtkWidget *scrollbar;
129
g_return_if_fail (GTK_IS_HBOX (container));
131
scrollbar = terminal_screen_container_get_scrollbar (container);
133
case GTK_CORNER_TOP_LEFT:
134
case GTK_CORNER_BOTTOM_LEFT:
135
gtk_box_reorder_child (GTK_BOX (container), scrollbar, 1);
137
case GTK_CORNER_TOP_RIGHT:
138
case GTK_CORNER_BOTTOM_RIGHT:
139
gtk_box_reorder_child (GTK_BOX (container), scrollbar, 0);