Mercurial > projects > dwt-linux
annotate dwt/widgets/Scrollable.d @ 364:2bcb17ebe0be default tip
fix: thx torhu
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 08 Nov 2009 20:57:46 +0100 |
parents | 96b14a31d9b3 |
children |
rev | line source |
---|---|
72 | 1 /******************************************************************************* |
259 | 2 * Copyright (c) 2000, 2008 IBM Corporation and others. |
31 | 3 * All rights reserved. This program and the accompanying materials |
4 * are made available under the terms of the Eclipse Public License v1.0 | |
5 * which accompanies this distribution, and is available at | |
6 * http://www.eclipse.org/legal/epl-v10.html | |
7 * | |
8 * Contributors: | |
9 * IBM Corporation - initial API and implementation | |
72 | 10 * Port to the D programming language: |
11 * Frank Benoit <benoit@tionex.de> | |
31 | 12 *******************************************************************************/ |
13 module dwt.widgets.Scrollable; | |
14 | |
322
96b14a31d9b3
Added missing dwthelper.utils imports. (catched by llvmdc)
Frank Benoit <benoit@tionex.de>
parents:
259
diff
changeset
|
15 import dwt.dwthelper.utils; |
31 | 16 |
71 | 17 import dwt.DWT; |
31 | 18 import dwt.internal.gtk.OS; |
19 import dwt.graphics.Rectangle; | |
20 import dwt.widgets.Composite; | |
21 import dwt.widgets.Control; | |
22 import dwt.widgets.Display; | |
23 import dwt.widgets.ScrollBar; | |
24 import dwt.widgets.Widget; | |
25 | |
26 import tango.stdc.string; | |
27 | |
28 /** | |
29 * This class is the abstract superclass of all classes which | |
30 * represent controls that have standard scroll bars. | |
31 * <dl> | |
32 * <dt><b>Styles:</b></dt> | |
33 * <dd>H_SCROLL, V_SCROLL</dd> | |
34 * <dt><b>Events:</b> | |
35 * <dd>(none)</dd> | |
36 * </dl> | |
37 * <p> | |
38 * IMPORTANT: This class is intended to be subclassed <em>only</em> | |
71 | 39 * within the DWT implementation. |
31 | 40 * </p> |
259 | 41 * |
42 * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> | |
31 | 43 */ |
44 public abstract class Scrollable : Control { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
45 GtkWidget* scrolledHandle; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
46 ScrollBar horizontalBar, verticalBar; |
31 | 47 |
48 /** | |
49 * Prevents uninitialized instances from being created outside the package. | |
50 */ | |
51 this () {} | |
52 | |
53 /** | |
54 * Constructs a new instance of this class given its parent | |
55 * and a style value describing its behavior and appearance. | |
56 * <p> | |
57 * The style value is either one of the style constants defined in | |
71 | 58 * class <code>DWT</code> which is applicable to instances of this |
31 | 59 * class, or must be built by <em>bitwise OR</em>'ing together |
60 * (that is, using the <code>int</code> "|" operator) two or more | |
71 | 61 * of those <code>DWT</code> style constants. The class description |
31 | 62 * lists the style constants that are applicable to the class. |
63 * Style bits are also inherited from superclasses. | |
64 * </p> | |
65 * | |
66 * @param parent a composite control which will be the parent of the new instance (cannot be null) | |
67 * @param style the style of control to construct | |
68 * | |
69 * @exception IllegalArgumentException <ul> | |
70 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> | |
71 * </ul> | |
71 | 72 * @exception DWTException <ul> |
31 | 73 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> |
74 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> | |
75 * </ul> | |
76 * | |
71 | 77 * @see DWT#H_SCROLL |
78 * @see DWT#V_SCROLL | |
31 | 79 * @see Widget#checkSubclass |
80 * @see Widget#getStyle | |
81 */ | |
82 public this (Composite parent, int style) { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
83 super (parent, style); |
31 | 84 } |
85 | |
86 GtkWidget* clientHandle () { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
87 return handle; |
31 | 88 } |
89 | |
90 /** | |
91 * Given a desired <em>client area</em> for the receiver | |
92 * (as described by the arguments), returns the bounding | |
93 * rectangle which would be required to produce that client | |
94 * area. | |
95 * <p> | |
96 * In other words, it returns a rectangle such that, if the | |
97 * receiver's bounds were set to that rectangle, the area | |
98 * of the receiver which is capable of displaying data | |
99 * (that is, not covered by the "trimmings") would be the | |
100 * rectangle described by the arguments (relative to the | |
101 * receiver's parent). | |
102 * </p> | |
103 * | |
104 * @param x the desired x coordinate of the client area | |
105 * @param y the desired y coordinate of the client area | |
106 * @param width the desired width of the client area | |
107 * @param height the desired height of the client area | |
108 * @return the required bounds to produce the given client area | |
109 * | |
71 | 110 * @exception DWTException <ul> |
31 | 111 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
112 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
113 * </ul> | |
114 * | |
115 * @see #getClientArea | |
116 */ | |
117 public Rectangle computeTrim (int x, int y, int width, int height) { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
118 checkWidget(); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
119 int border = 0; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
120 if (fixedHandle !is null) border += OS.gtk_container_get_border_width (cast(GtkContainer*)fixedHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
121 if (scrolledHandle !is null) border += OS.gtk_container_get_border_width (cast(GtkContainer*)scrolledHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
122 int trimX = x - border, trimY = y - border; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
123 int trimWidth = width + (border * 2), trimHeight = height + (border * 2); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
124 trimHeight += hScrollBarWidth (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
125 trimWidth += vScrollBarWidth (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
126 if (scrolledHandle !is null) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
127 if (OS.gtk_scrolled_window_get_shadow_type (cast(GtkScrolledWindow*)scrolledHandle) !is OS.GTK_SHADOW_NONE) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
128 auto style = OS.gtk_widget_get_style (cast(GtkWidget*)scrolledHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
129 int xthickness = OS.gtk_style_get_xthickness (style); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
130 int ythickness = OS.gtk_style_get_ythickness (style); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
131 trimX -= xthickness; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
132 trimY -= ythickness; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
133 trimWidth += xthickness * 2; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
134 trimHeight += ythickness * 2; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
135 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
136 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
137 return new Rectangle (trimX, trimY, trimWidth, trimHeight); |
31 | 138 } |
139 | |
140 ScrollBar createScrollBar (int style) { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
141 if (scrolledHandle is null) return null; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
142 ScrollBar bar = new ScrollBar (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
143 bar.parent = this; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
144 bar.style = style; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
145 bar.display = display; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
146 bar.state |= HANDLE; |
71 | 147 if ((style & DWT.H_SCROLL) !is 0) { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
148 bar.handle = OS.GTK_SCROLLED_WINDOW_HSCROLLBAR (cast(GtkScrolledWindow*)scrolledHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
149 bar.adjustmentHandle = OS.gtk_scrolled_window_get_hadjustment (cast(GtkScrolledWindow*)scrolledHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
150 } else { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
151 bar.handle = OS.GTK_SCROLLED_WINDOW_VSCROLLBAR (cast(GtkScrolledWindow*)scrolledHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
152 bar.adjustmentHandle = OS.gtk_scrolled_window_get_vadjustment (cast(GtkScrolledWindow*)scrolledHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
153 } |
240 | 154 bar.setOrientation(); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
155 bar.hookEvents (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
156 bar.register (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
157 return bar; |
31 | 158 } |
159 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
34
diff
changeset
|
160 override void createWidget (int index) { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
161 super.createWidget (index); |
71 | 162 if ((style & DWT.H_SCROLL) !is 0) horizontalBar = createScrollBar (DWT.H_SCROLL); |
163 if ((style & DWT.V_SCROLL) !is 0) verticalBar = createScrollBar (DWT.V_SCROLL); | |
31 | 164 } |
165 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
34
diff
changeset
|
166 override void deregister () { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
167 super.deregister (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
168 if (scrolledHandle !is null) display.removeWidget (cast(GtkWidget*)scrolledHandle); |
31 | 169 } |
170 | |
240 | 171 void destroyScrollBar (ScrollBar bar) { |
172 setScrollBarVisible (bar, false); | |
173 //This code is intentionally commented | |
174 //bar.destroyHandle (); | |
175 } | |
176 | |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
177 public override int getBorderWidth () { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
178 checkWidget(); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
179 int border = 0; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
180 if (fixedHandle !is null) border += OS.gtk_container_get_border_width (cast(GtkContainer*)fixedHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
181 if (scrolledHandle !is null) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
182 border += OS.gtk_container_get_border_width (cast(GtkContainer*)scrolledHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
183 if (OS.gtk_scrolled_window_get_shadow_type (cast(GtkScrolledWindow*)scrolledHandle) !is OS.GTK_SHADOW_NONE) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
184 border += OS.gtk_style_get_xthickness (OS.gtk_widget_get_style (cast(GtkWidget*)scrolledHandle)); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
185 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
186 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
187 return border; |
31 | 188 } |
189 | |
190 /** | |
191 * Returns a rectangle which describes the area of the | |
192 * receiver which is capable of displaying data (that is, | |
193 * not covered by the "trimmings"). | |
194 * | |
195 * @return the client area | |
196 * | |
71 | 197 * @exception DWTException <ul> |
31 | 198 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
199 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
200 * </ul> | |
201 * | |
202 * @see #computeTrim | |
203 */ | |
204 public Rectangle getClientArea () { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
205 checkWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
206 forceResize (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
207 auto clientHandle = clientHandle (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
208 int x = OS.GTK_WIDGET_X (clientHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
209 int y = OS.GTK_WIDGET_Y (clientHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
210 int width = (state & ZERO_WIDTH) !is 0 ? 0 : OS.GTK_WIDGET_WIDTH (clientHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
211 int height = (state & ZERO_HEIGHT) !is 0 ? 0 : OS.GTK_WIDGET_HEIGHT (clientHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
212 return new Rectangle (x, y, width, height); |
31 | 213 } |
214 /** | |
215 * Returns the receiver's horizontal scroll bar if it has | |
216 * one, and null if it does not. | |
217 * | |
218 * @return the horizontal scroll bar (or null) | |
219 * | |
71 | 220 * @exception DWTException <ul> |
31 | 221 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
222 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
223 * </ul> | |
224 */ | |
225 public ScrollBar getHorizontalBar () { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
226 checkWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
227 return horizontalBar; |
31 | 228 } |
229 /** | |
230 * Returns the receiver's vertical scroll bar if it has | |
231 * one, and null if it does not. | |
232 * | |
233 * @return the vertical scroll bar (or null) | |
234 * | |
71 | 235 * @exception DWTException <ul> |
31 | 236 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
237 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
238 * </ul> | |
239 */ | |
240 public ScrollBar getVerticalBar () { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
241 checkWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
242 return verticalBar; |
31 | 243 } |
244 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
34
diff
changeset
|
245 override int /*long*/ gtk_scroll_event (GtkWidget* widget, GdkEventScroll* eventPtr) { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
246 auto result = super.gtk_scroll_event (widget, eventPtr); |
31 | 247 |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
248 /* |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
249 * Feature in GTK. Scrolled windows do not scroll if the scrollbars |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
250 * are hidden. This is not a bug, but is inconsistent with other platforms. |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
251 * The fix is to set the adjustment values directly. |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
252 */ |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
253 if ((state & CANVAS) !is 0) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
254 ScrollBar scrollBar; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
255 GdkEventScroll* gdkEvent = new GdkEventScroll (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
256 memmove (gdkEvent, eventPtr, GdkEventScroll.sizeof); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
257 if (gdkEvent.direction is OS.GDK_SCROLL_UP || gdkEvent.direction is OS.GDK_SCROLL_DOWN) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
258 scrollBar = verticalBar; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
259 } else { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
260 scrollBar = horizontalBar; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
261 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
262 if (scrollBar !is null && !OS.GTK_WIDGET_VISIBLE (scrollBar.handle) && scrollBar.getEnabled()) { |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
72
diff
changeset
|
263 GtkAdjustment* adjustment = scrollBar.adjustmentHandle; |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
264 /* Calculate wheel delta to match GTK+ 2.4 and higher */ |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
265 int wheel_delta = cast(int) Math.pow(adjustment.page_size, 2.0 / 3.0); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
266 if (gdkEvent.direction is OS.GDK_SCROLL_UP || gdkEvent.direction is OS.GDK_SCROLL_LEFT) |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
267 wheel_delta = -wheel_delta; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
268 int value = cast(int) Math.max(adjustment.lower, |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
269 Math.min(adjustment.upper - adjustment.page_size, adjustment.value + wheel_delta)); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
270 OS.gtk_adjustment_set_value (scrollBar.adjustmentHandle, value); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
271 return 1; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
272 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
273 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
274 return result; |
31 | 275 } |
276 | |
277 int hScrollBarWidth() { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
278 if (horizontalBar is null) return 0; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
279 auto hBarHandle = OS.GTK_SCROLLED_WINDOW_HSCROLLBAR(cast(GtkScrolledWindow*)scrolledHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
280 if (hBarHandle is null) return 0; |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
72
diff
changeset
|
281 GtkRequisition requisition; |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
72
diff
changeset
|
282 OS.gtk_widget_size_request(cast(GtkWidget*)hBarHandle, &requisition); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
283 int spacing = OS.GTK_SCROLLED_WINDOW_SCROLLBAR_SPACING(cast(GtkScrolledWindow*)scrolledHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
284 return requisition.height + spacing; |
31 | 285 } |
286 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
34
diff
changeset
|
287 override bool sendLeaveNotify () { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
288 return scrolledHandle !is null; |
31 | 289 } |
290 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
34
diff
changeset
|
291 override void setOrientation () { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
292 super.setOrientation (); |
71 | 293 if ((style & DWT.RIGHT_TO_LEFT) !is 0) { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
294 if (scrolledHandle !is null) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
295 OS.gtk_widget_set_direction (cast(GtkWidget*)scrolledHandle, OS.GTK_TEXT_DIR_RTL); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
296 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
297 } |
31 | 298 } |
299 | |
300 bool setScrollBarVisible (ScrollBar bar, bool visible) { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
301 if (scrolledHandle is null) return false; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
302 int hsp, vsp; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
303 OS.gtk_scrolled_window_get_policy (cast(GtkScrolledWindow*)scrolledHandle, &hsp, &vsp); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
304 int policy = visible ? OS.GTK_POLICY_ALWAYS : OS.GTK_POLICY_NEVER; |
71 | 305 if ((bar.style & DWT.HORIZONTAL) !is 0) { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
306 if (hsp is policy) return false; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
307 hsp = policy; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
308 } else { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
309 if (vsp is policy) return false; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
310 vsp = policy; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
311 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
312 OS.gtk_scrolled_window_set_policy (cast(GtkScrolledWindow*)scrolledHandle, hsp, vsp); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
313 return true; |
31 | 314 } |
315 | |
316 void redrawBackgroundImage () { | |
317 } | |
318 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
34
diff
changeset
|
319 override void redrawWidget (int x, int y, int width, int height, bool redrawAll, bool all, bool trim) { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
320 super.redrawWidget (x, y, width, height, redrawAll, all, trim); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
321 if ((OS.GTK_WIDGET_FLAGS (handle) & OS.GTK_REALIZED) is 0) return; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
322 if (!trim) return; |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
323 auto topHandle_ = topHandle (), paintHandle_ = paintHandle (); |
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
324 if (topHandle_ is paintHandle_) return; |
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
325 auto window = OS.GTK_WIDGET_WINDOW (topHandle_); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
326 GdkRectangle* rect = new GdkRectangle (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
327 if (redrawAll) { |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
328 rect.width = OS.GTK_WIDGET_WIDTH (topHandle_); |
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
329 rect.height = OS.GTK_WIDGET_HEIGHT (topHandle_); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
330 } else { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
331 int destX, destY; |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
332 OS.gtk_widget_translate_coordinates (cast(GtkWidget*)paintHandle_, topHandle_, x, y, &destX, &destY); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
333 rect.x = destX; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
334 rect.y = destY; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
335 rect.width = width; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
336 rect.height = height; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
337 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
338 OS.gdk_window_invalidate_rect (window, rect, all); |
31 | 339 } |
340 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
34
diff
changeset
|
341 override void register () { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
342 super.register (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
343 if (scrolledHandle !is null) display.addWidget (cast(GtkWidget*)scrolledHandle, this); |
31 | 344 } |
345 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
34
diff
changeset
|
346 override void releaseHandle () { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
347 super.releaseHandle (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
348 scrolledHandle = null; |
31 | 349 } |
350 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
34
diff
changeset
|
351 override void releaseChildren (bool destroy) { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
352 if (horizontalBar !is null) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
353 horizontalBar.release (false); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
354 horizontalBar = null; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
355 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
356 if (verticalBar !is null) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
357 verticalBar.release (false); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
358 verticalBar = null; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
359 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
360 super.releaseChildren (destroy); |
31 | 361 } |
362 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
34
diff
changeset
|
363 override void resizeHandle (int width, int height) { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
364 if (fixedHandle !is null) OS.gtk_widget_set_size_request (cast(GtkWidget*)fixedHandle, width, height); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
365 OS.gtk_widget_set_size_request (scrolledHandle !is null ? cast(GtkWidget*)scrolledHandle : handle, width, height); |
31 | 366 } |
367 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
34
diff
changeset
|
368 override void showWidget () { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
369 super.showWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
370 if (scrolledHandle !is null) OS.gtk_widget_show (cast(GtkWidget*)scrolledHandle); |
31 | 371 } |
372 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
34
diff
changeset
|
373 override GtkWidget* topHandle () { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
374 if (fixedHandle !is null) return fixedHandle; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
375 if (scrolledHandle !is null) return scrolledHandle; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
376 return super.topHandle (); |
31 | 377 } |
378 | |
379 void updateScrollBarValue (ScrollBar bar) { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
380 redrawBackgroundImage (); |
31 | 381 } |
382 | |
383 int vScrollBarWidth() { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
384 if (verticalBar is null) return 0; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
385 auto vBarHandle = OS.GTK_SCROLLED_WINDOW_VSCROLLBAR(cast(GtkScrolledWindow*)scrolledHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
386 if (vBarHandle is null) return 0; |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
72
diff
changeset
|
387 GtkRequisition requisition; |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
72
diff
changeset
|
388 OS.gtk_widget_size_request (cast(GtkWidget*)vBarHandle, &requisition); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
389 int spacing = OS.GTK_SCROLLED_WINDOW_SCROLLBAR_SPACING(cast(GtkScrolledWindow*)scrolledHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
390 return requisition.width + spacing; |
31 | 391 } |
392 } |