OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [native/] [jni/] [gtk-peer/] [gnu_java_awt_peer_gtk_GtkScrollPanePeer.c] - Blame information for rev 774

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 774 jeremybenn
/* gtkscrollpanepeer.c -- Native implementation of GtkScrollPanePeer
2
   Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
 
39
#include "gtkpeer.h"
40
#include "gnu_java_awt_peer_gtk_GtkScrollPanePeer.h"
41
 
42
#define AWT_SCROLLPANE_SCROLLBARS_AS_NEEDED 0
43
#define AWT_SCROLLPANE_SCROLLBARS_ALWAYS 1
44
#define AWT_SCROLLPANE_SCROLLBARS_NEVER 2
45
 
46
static GtkWidget *scrollpane_get_widget (GtkWidget *widget);
47
 
48
JNIEXPORT void JNICALL
49
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_create
50
  (JNIEnv *env, jobject obj, int width, int height)
51
{
52
  GtkWidget *sw;
53
  GtkWidget *eventbox;
54
 
55
  gdk_threads_enter ();
56
 
57
  /* Create global reference and save it for future use */
58
  gtkpeer_set_global_ref (env, obj);
59
 
60
  sw = gtk_scrolled_window_new (NULL, NULL);
61
  gtk_widget_set_size_request (sw, width, height);
62
  eventbox = gtk_event_box_new ();
63
  gtk_container_add (GTK_CONTAINER (eventbox), sw);
64
  gtk_widget_show (sw);
65
 
66
  gtkpeer_set_widget (env, obj, eventbox);
67
 
68
  gdk_threads_leave ();
69
}
70
 
71
JNIEXPORT void JNICALL
72
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_setScrollPosition
73
  (JNIEnv *env, jobject obj, jint x, jint y)
74
{
75
  GtkAdjustment *hadj, *vadj;
76
  GtkScrolledWindow *sw;
77
  void *ptr;
78
 
79
  gdk_threads_enter ();
80
 
81
  ptr = gtkpeer_get_widget (env, obj);
82
 
83
  sw = GTK_SCROLLED_WINDOW (scrollpane_get_widget (GTK_WIDGET (ptr)));
84
 
85
  hadj = gtk_scrolled_window_get_hadjustment (sw);
86
  vadj = gtk_scrolled_window_get_vadjustment (sw);
87
 
88
  gtk_adjustment_set_value (hadj, x);
89
  gtk_adjustment_set_value (vadj, y);
90
 
91
  gdk_threads_leave ();
92
}
93
 
94
JNIEXPORT void JNICALL
95
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowSetHScrollIncrement
96
  (JNIEnv *env, jobject obj, jint u)
97
{
98
  GtkAdjustment *hadj;
99
  GtkScrolledWindow *sw;
100
  void *ptr;
101
 
102
  gdk_threads_enter ();
103
 
104
  ptr = gtkpeer_get_widget (env, obj);
105
 
106
  sw = GTK_SCROLLED_WINDOW (scrollpane_get_widget (GTK_WIDGET (ptr)));
107
 
108
  hadj = gtk_scrolled_window_get_hadjustment (sw);
109
  hadj->step_increment = u;
110
 
111
  gdk_threads_leave ();
112
}
113
 
114
JNIEXPORT void JNICALL
115
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowSetVScrollIncrement
116
  (JNIEnv *env, jobject obj, jint u)
117
{
118
  GtkAdjustment *vadj;
119
  GtkScrolledWindow *sw;
120
  void *ptr;
121
 
122
  gdk_threads_enter ();
123
 
124
  ptr = gtkpeer_get_widget (env, obj);
125
 
126
  sw = GTK_SCROLLED_WINDOW (scrollpane_get_widget (GTK_WIDGET (ptr)));
127
 
128
  vadj = gtk_scrolled_window_get_hadjustment (sw);
129
  vadj->step_increment = u;
130
 
131
  gdk_threads_leave ();
132
}
133
 
134
JNIEXPORT jint JNICALL
135
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_getHScrollbarHeight
136
  (JNIEnv *env, jobject obj)
137
{
138
  void *ptr;
139
  GtkScrolledWindow *sw;
140
  GtkRequisition requisition;
141
  jint height = 0;
142
  jint spacing = 0;
143
 
144
  gdk_threads_enter ();
145
 
146
  ptr = gtkpeer_get_widget (env, obj);
147
 
148
  sw = GTK_SCROLLED_WINDOW (scrollpane_get_widget (GTK_WIDGET (ptr)));
149
 
150
  gtk_widget_size_request (sw->hscrollbar, &requisition);
151
  gtk_widget_style_get (GTK_WIDGET (sw), "scrollbar_spacing", &spacing, NULL);
152
  height = requisition.height + spacing;
153
 
154
  gdk_threads_leave ();
155
 
156
  return height;
157
}
158
 
159
JNIEXPORT jint JNICALL
160
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_getVScrollbarWidth
161
  (JNIEnv *env, jobject obj)
162
{
163
  void *ptr;
164
  GtkScrolledWindow *sw;
165
  GtkRequisition requisition;
166
  jint width = 0;
167
  jint spacing = 0;
168
 
169
  gdk_threads_enter ();
170
 
171
  ptr = gtkpeer_get_widget (env, obj);
172
 
173
  sw = GTK_SCROLLED_WINDOW (scrollpane_get_widget (GTK_WIDGET (ptr)));
174
 
175
  gtk_widget_size_request (sw->vscrollbar, &requisition);
176
  gtk_widget_style_get (GTK_WIDGET (sw), "scrollbar_spacing", &spacing, NULL);
177
  width = requisition.width + spacing;
178
 
179
  gdk_threads_leave ();
180
 
181
  return width;
182
}
183
 
184
JNIEXPORT void JNICALL
185
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_setPolicy
186
  (JNIEnv *env, jobject obj, jint policy)
187
{
188
  void *ptr;
189
  GtkWidget *sw;
190
 
191
  gdk_threads_enter ();
192
 
193
  ptr = gtkpeer_get_widget (env, obj);
194
 
195
  switch (policy)
196
    {
197
    case AWT_SCROLLPANE_SCROLLBARS_AS_NEEDED:
198
      policy = GTK_POLICY_AUTOMATIC;
199
      break;
200
    case AWT_SCROLLPANE_SCROLLBARS_ALWAYS:
201
      policy = GTK_POLICY_ALWAYS;
202
      break;
203
    case AWT_SCROLLPANE_SCROLLBARS_NEVER:
204
      policy = GTK_POLICY_NEVER;
205
      break;
206
    }
207
 
208
  sw = scrollpane_get_widget (GTK_WIDGET (ptr));
209
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), policy, policy);
210
 
211
  gdk_threads_leave ();
212
}
213
 
214
static GtkWidget *
215
scrollpane_get_widget (GtkWidget *widget)
216
{
217
  GtkWidget *wid;
218
  g_assert (GTK_IS_EVENT_BOX (widget));
219
  wid = gtk_bin_get_child (GTK_BIN(widget));
220
 
221
  return wid;
222
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.