Mercurial > projects > dwt-linux
annotate dwt/widgets/Decorations.d @ 238:380bad9f6852
reverted char[] to String
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 05 May 2008 00:42:55 +0200 |
parents | 08789b28bdf3 |
children | 5a30aa9820f3 |
rev | line source |
---|---|
72 | 1 /******************************************************************************* |
30 | 2 * Copyright (c) 2000, 2007 IBM Corporation and others. |
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> | |
30 | 12 *******************************************************************************/ |
13 module dwt.widgets.Decorations; | |
14 | |
15 import dwt.widgets.Control; | |
16 import dwt.widgets.Menu; | |
17 import dwt.widgets.Composite; | |
18 | |
71 | 19 import dwt.DWT; |
37 | 20 import dwt.internal.gtk.OS; |
21 //import dwt.graphics.; | |
22 import dwt.widgets.Canvas; | |
23 import dwt.graphics.Image; | |
24 import dwt.graphics.ImageData; | |
25 import dwt.widgets.Control; | |
26 import dwt.widgets.Display; | |
27 import dwt.widgets.Widget; | |
28 import dwt.widgets.Button; | |
200
08789b28bdf3
import dwt.dwthelper.utils now explicit
Frank Benoit <benoit@tionex.de>
parents:
189
diff
changeset
|
29 import dwt.dwthelper.utils; |
30 | 30 |
31 /** | |
32 * Instances of this class provide the appearance and | |
33 * behavior of <code>Shells</code>, but are not top | |
34 * level shells or dialogs. Class <code>Shell</code> | |
35 * shares a significant amount of code with this class, | |
36 * and is a subclass. | |
37 * <p> | |
38 * IMPORTANT: This class was intended to be abstract and | |
39 * should <em>never</em> be referenced or instantiated. | |
40 * Instead, the class <code>Shell</code> should be used. | |
41 * </p> | |
42 * <p> | |
43 * Instances are always displayed in one of the maximized, | |
44 * minimized or normal states: | |
45 * <ul> | |
46 * <li> | |
47 * When an instance is marked as <em>maximized</em>, the | |
48 * window manager will typically resize it to fill the | |
49 * entire visible area of the display, and the instance | |
50 * is usually put in a state where it can not be resized | |
51 * (even if it has style <code>RESIZE</code>) until it is | |
52 * no longer maximized. | |
53 * </li><li> | |
54 * When an instance is in the <em>normal</em> state (neither | |
55 * maximized or minimized), its appearance is controlled by | |
56 * the style constants which were specified when it was created | |
57 * and the restrictions of the window manager (see below). | |
58 * </li><li> | |
59 * When an instance has been marked as <em>minimized</em>, | |
60 * its contents (client area) will usually not be visible, | |
61 * and depending on the window manager, it may be | |
62 * "iconified" (that is, replaced on the desktop by a small | |
63 * simplified representation of itself), relocated to a | |
64 * distinguished area of the screen, or hidden. Combinations | |
65 * of these changes are also possible. | |
66 * </li> | |
67 * </ul> | |
68 * </p> | |
69 * Note: The styles supported by this class must be treated | |
70 * as <em>HINT</em>s, since the window manager for the | |
71 * desktop on which the instance is visible has ultimate | |
72 * control over the appearance and behavior of decorations. | |
73 * For example, some window managers only support resizable | |
74 * windows and will always assume the RESIZE style, even if | |
75 * it is not set. | |
76 * <dl> | |
77 * <dt><b>Styles:</b></dt> | |
78 * <dd>BORDER, CLOSE, MIN, MAX, NO_TRIM, RESIZE, TITLE, ON_TOP, TOOL</dd> | |
79 * <dt><b>Events:</b></dt> | |
80 * <dd>(none)</dd> | |
81 * </dl> | |
71 | 82 * Class <code>DWT</code> provides two "convenience constants" |
30 | 83 * for the most commonly required style combinations: |
84 * <dl> | |
85 * <dt><code>SHELL_TRIM</code></dt> | |
86 * <dd> | |
87 * the result of combining the constants which are required | |
88 * to produce a typical application top level shell: (that | |
89 * is, <code>CLOSE | TITLE | MIN | MAX | RESIZE</code>) | |
90 * </dd> | |
91 * <dt><code>DIALOG_TRIM</code></dt> | |
92 * <dd> | |
93 * the result of combining the constants which are required | |
94 * to produce a typical application dialog shell: (that | |
95 * is, <code>TITLE | CLOSE | BORDER</code>) | |
96 * </dd> | |
97 * </dl> | |
98 * <p> | |
99 * IMPORTANT: This class is intended to be subclassed <em>only</em> | |
71 | 100 * within the DWT implementation. |
30 | 101 * </p> |
102 * | |
103 * @see #getMinimized | |
104 * @see #getMaximized | |
105 * @see Shell | |
71 | 106 * @see DWT |
30 | 107 */ |
37 | 108 public class Decorations : Canvas { |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
72
diff
changeset
|
109 |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
72
diff
changeset
|
110 alias Canvas.sort sort; |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
72
diff
changeset
|
111 |
238 | 112 String text; |
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
|
113 Image image; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
114 Image [] images; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
115 bool minimized, maximized; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
116 Menu menuBar; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
117 Menu [] menus; |
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 Control savedFocus; |
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 Button defaultButton, saveDefault; |
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 GtkAccelGroup* accelGroup; |
38 | 121 GtkWidget* vboxHandle; |
30 | 122 |
37 | 123 this () { |
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
|
124 /* Do nothing */ |
30 | 125 } |
126 | |
127 /** | |
128 * Constructs a new instance of this class given its parent | |
129 * and a style value describing its behavior and appearance. | |
130 * <p> | |
131 * The style value is either one of the style constants defined in | |
71 | 132 * class <code>DWT</code> which is applicable to instances of this |
30 | 133 * class, or must be built by <em>bitwise OR</em>'ing together |
134 * (that is, using the <code>int</code> "|" operator) two or more | |
71 | 135 * of those <code>DWT</code> style constants. The class description |
30 | 136 * lists the style constants that are applicable to the class. |
137 * Style bits are also inherited from superclasses. | |
138 * </p> | |
139 * | |
140 * @param parent a composite control which will be the parent of the new instance (cannot be null) | |
141 * @param style the style of control to construct | |
142 * | |
143 * @exception IllegalArgumentException <ul> | |
144 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> | |
145 * </ul> | |
71 | 146 * @exception DWTException <ul> |
30 | 147 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> |
148 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> | |
149 * </ul> | |
150 * | |
71 | 151 * @see DWT#BORDER |
152 * @see DWT#CLOSE | |
153 * @see DWT#MIN | |
154 * @see DWT#MAX | |
155 * @see DWT#RESIZE | |
156 * @see DWT#TITLE | |
157 * @see DWT#NO_TRIM | |
158 * @see DWT#SHELL_TRIM | |
159 * @see DWT#DIALOG_TRIM | |
160 * @see DWT#ON_TOP | |
161 * @see DWT#TOOL | |
30 | 162 * @see Widget#checkSubclass |
163 * @see Widget#getStyle | |
164 */ | |
37 | 165 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
|
166 super (parent, checkStyle (style)); |
30 | 167 } |
168 | |
169 static int checkStyle (int style) { | |
71 | 170 if ((style & DWT.NO_TRIM) !is 0) { |
171 style &= ~(DWT.CLOSE | DWT.TITLE | DWT.MIN | DWT.MAX | DWT.RESIZE | DWT.BORDER); | |
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
|
172 } |
71 | 173 if ((style & (DWT.MENU | DWT.MIN | DWT.MAX | DWT.CLOSE)) !is 0) { |
174 style |= DWT.TITLE; | |
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
|
175 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
176 return style; |
30 | 177 } |
178 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
179 override protected void checkSubclass () { |
71 | 180 if (!isValidSubclass ()) error (DWT.ERROR_INVALID_SUBCLASS); |
30 | 181 } |
182 | |
183 void _setImages (Image [] images) { | |
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
|
184 if (images !is null && images.length > 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
|
185 Image [] bestImages = new Image [images.length]; |
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 System.arraycopy (images, 0, bestImages, 0, images.length); |
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 sort (bestImages); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
188 images = bestImages; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
189 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
190 GList* pixbufs; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
191 if (images !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
|
192 for (int i = 0; i < images.length; i++) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
193 Image image = images [i]; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
194 auto pixbuf = Display.createPixbuf (image); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
195 pixbufs = OS.g_list_append (pixbufs, pixbuf); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
196 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
197 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
198 OS.gtk_window_set_icon_list (cast(GtkWindow*)topHandle (), pixbufs); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
199 GList* data; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
200 auto temp = pixbufs; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
201 while (temp !is null) { |
189
ac6ff7065cac
Fix: pointer porting, thanks WasserDragon for the hint.
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
202 data = *cast(GList**)temp; |
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
|
203 OS.g_object_unref (data); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
204 temp = cast(GList*)OS.g_list_next (temp); |
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 } |
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 if (pixbufs !is null) OS.g_list_free (pixbufs); |
30 | 207 } |
208 | |
209 void addMenu (Menu menu) { | |
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
|
210 if (menus is null) menus = new Menu [4]; |
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 for (int i=0; i<menus.length; i++) { |
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 if (menus [i] 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
|
213 menus [i] = menu; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
214 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
|
215 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
216 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
217 Menu [] newMenus = new Menu [menus.length + 4]; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
218 newMenus [menus.length] = menu; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
219 System.arraycopy (menus, 0, newMenus, 0, menus.length); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
220 menus = newMenus; |
30 | 221 } |
222 | |
223 int compare (ImageData data1, ImageData data2) { | |
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
|
224 if (data1.width is data2.width && data1.height is data2.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
|
225 int transparent1 = data1.getTransparencyType (); |
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 int transparent2 = data2.getTransparencyType (); |
71 | 227 if (transparent1 is DWT.TRANSPARENCY_ALPHA) return -1; |
228 if (transparent2 is DWT.TRANSPARENCY_ALPHA) return 1; | |
229 if (transparent1 is DWT.TRANSPARENCY_MASK) return -1; | |
230 if (transparent2 is DWT.TRANSPARENCY_MASK) return 1; | |
231 if (transparent1 is DWT.TRANSPARENCY_PIXEL) return -1; | |
232 if (transparent2 is DWT.TRANSPARENCY_PIXEL) return 1; | |
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
|
233 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
|
234 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
235 return data1.width > data2.width || data1.height > data2.height ? -1 : 1; |
30 | 236 } |
237 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
238 override Control computeTabGroup () { |
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
|
239 return this; |
30 | 240 } |
241 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
242 override Control computeTabRoot () { |
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
|
243 return this; |
30 | 244 } |
245 | |
246 void createAccelGroup () { | |
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
|
247 if (accelGroup !is null) 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
|
248 accelGroup = OS.gtk_accel_group_new (); |
71 | 249 if (accelGroup is null) DWT.error (DWT.ERROR_NO_HANDLES); |
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
|
250 //FIXME - what should we do for Decorations |
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 auto shellHandle = topHandle (); |
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 OS.gtk_window_add_accel_group (cast(GtkWindow*)shellHandle, accelGroup); |
30 | 253 } |
254 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
255 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
|
256 super.createWidget (index); |
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 text = ""; |
30 | 258 } |
259 | |
260 void destroyAccelGroup () { | |
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
|
261 if (accelGroup is null) 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
|
262 auto shellHandle = topHandle (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
263 OS.gtk_window_remove_accel_group (cast(GtkWindow*)shellHandle, accelGroup); |
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 //TEMPORARY CODE |
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 // OS.g_object_unref (accelGroup); |
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 accelGroup = null; |
30 | 267 } |
268 | |
269 void fixAccelGroup () { | |
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
|
270 if (menuBar is null) 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
|
271 destroyAccelGroup (); |
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 createAccelGroup (); |
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 menuBar.addAccelerators (accelGroup); |
30 | 274 } |
275 | |
276 void fixDecorations (Decorations newDecorations, Control control, Menu [] menus) { | |
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
|
277 if (this is newDecorations) 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
|
278 if (control is savedFocus) savedFocus = 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
|
279 if (control is defaultButton) defaultButton = 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
|
280 if (control is saveDefault) saveDefault = 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
|
281 if (menus is null) 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
|
282 Menu menu = control.menu; |
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 if (menu !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
|
284 int index = 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
|
285 while (index <menus.length) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
286 if (menus [index] is menu) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
287 control.setMenu (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
|
288 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
|
289 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
290 index++; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
291 } |
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 menu.fixMenus (newDecorations); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
293 } |
30 | 294 } |
295 | |
296 /** | |
297 * Returns the receiver's default button if one had | |
298 * previously been set, otherwise returns null. | |
299 * | |
300 * @return the default button or null | |
301 * | |
71 | 302 * @exception DWTException <ul> |
30 | 303 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
304 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
305 * </ul> | |
306 * | |
307 * @see #setDefaultButton(Button) | |
308 */ | |
309 public Button getDefaultButton () { | |
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
|
310 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
|
311 return defaultButton !is null ? defaultButton : saveDefault; |
30 | 312 } |
313 | |
314 /** | |
315 * Returns the receiver's image if it had previously been | |
316 * set using <code>setImage()</code>. The image is typically | |
317 * displayed by the window manager when the instance is | |
318 * marked as iconified, and may also be displayed somewhere | |
319 * in the trim when the instance is in normal or maximized | |
320 * states. | |
321 * <p> | |
322 * Note: This method will return null if called before | |
323 * <code>setImage()</code> is called. It does not provide | |
324 * access to a window manager provided, "default" image | |
325 * even if one exists. | |
326 * </p> | |
327 * | |
328 * @return the image | |
329 * | |
71 | 330 * @exception DWTException <ul> |
30 | 331 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
332 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
333 * </ul> | |
334 */ | |
335 public Image getImage () { | |
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
|
336 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
|
337 return image; |
30 | 338 } |
339 | |
340 /** | |
341 * Returns the receiver's images if they had previously been | |
342 * set using <code>setImages()</code>. Images are typically | |
343 * displayed by the window manager when the instance is | |
344 * marked as iconified, and may also be displayed somewhere | |
345 * in the trim when the instance is in normal or maximized | |
346 * states. Depending where the icon is displayed, the platform | |
347 * chooses the icon with the "best" attributes. It is expected | |
348 * that the array will contain the same icon rendered at different | |
349 * sizes, with different depth and transparency attributes. | |
350 * | |
351 * <p> | |
352 * Note: This method will return an empty array if called before | |
353 * <code>setImages()</code> is called. It does not provide | |
354 * access to a window manager provided, "default" image | |
355 * even if one exists. | |
356 * </p> | |
357 * | |
358 * @return the images | |
359 * | |
71 | 360 * @exception DWTException <ul> |
30 | 361 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
362 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
363 * </ul> | |
364 * | |
365 * @since 3.0 | |
366 */ | |
367 public Image [] getImages () { | |
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
|
368 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
|
369 if (images is null) return new Image [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
|
370 Image [] result = new Image [images.length]; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
371 System.arraycopy (images, 0, result, 0, images.length); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
372 return result; |
30 | 373 } |
374 | |
375 /** | |
376 * Returns <code>true</code> if the receiver is currently | |
377 * maximized, and false otherwise. | |
378 * <p> | |
379 * | |
380 * @return the maximized state | |
381 * | |
71 | 382 * @exception DWTException <ul> |
30 | 383 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
384 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
385 * </ul> | |
386 * | |
387 * @see #setMaximized | |
388 */ | |
37 | 389 public bool getMaximized () { |
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
|
390 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
|
391 return maximized; |
30 | 392 } |
393 | |
394 /** | |
395 * Returns the receiver's menu bar if one had previously | |
396 * been set, otherwise returns null. | |
397 * | |
398 * @return the menu bar or null | |
399 * | |
71 | 400 * @exception DWTException <ul> |
30 | 401 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
402 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
403 * </ul> | |
404 */ | |
405 public Menu getMenuBar () { | |
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
|
406 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
|
407 return menuBar; |
30 | 408 } |
409 | |
410 /** | |
411 * Returns <code>true</code> if the receiver is currently | |
412 * minimized, and false otherwise. | |
413 * <p> | |
414 * | |
415 * @return the minimized state | |
416 * | |
71 | 417 * @exception DWTException <ul> |
30 | 418 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
419 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
420 * </ul> | |
421 * | |
422 * @see #setMinimized | |
423 */ | |
37 | 424 public bool getMinimized () { |
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
|
425 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
|
426 return minimized; |
30 | 427 } |
428 | |
238 | 429 override String getNameText () { |
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
|
430 return getText (); |
30 | 431 } |
432 | |
433 /** | |
434 * Returns the receiver's text, which is the string that the | |
435 * window manager will typically display as the receiver's | |
436 * <em>title</em>. If the text has not previously been set, | |
437 * returns an empty string. | |
438 * | |
439 * @return the text | |
440 * | |
71 | 441 * @exception DWTException <ul> |
30 | 442 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
443 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
444 * </ul> | |
445 */ | |
238 | 446 public String getText () { |
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
|
447 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
|
448 return text; |
30 | 449 } |
450 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
451 override public bool isReparentable () { |
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
|
452 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
|
453 return false; |
30 | 454 } |
455 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
456 override bool isTabGroup () { |
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
|
457 return true; |
30 | 458 } |
459 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
460 override bool isTabItem () { |
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
|
461 return false; |
30 | 462 } |
463 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
464 override Decorations menuShell () { |
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
|
465 return this; |
30 | 466 } |
467 | |
468 void removeMenu (Menu menu) { | |
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
|
469 if (menus is null) 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
|
470 for (int i=0; i<menus.length; i++) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
471 if (menus [i] is menu) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
472 menus [i] = 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
|
473 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
|
474 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
475 } |
30 | 476 } |
477 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
478 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
|
479 if (menuBar !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
|
480 menuBar.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
|
481 menuBar = 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
|
482 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
483 super.releaseChildren (destroy); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
484 if (menus !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
|
485 for (int i=0; i<menus.length; i++) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
486 Menu menu = menus [i]; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
487 if (menu !is null && !menu.isDisposed ()) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
488 menu.dispose (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
489 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
490 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
491 menus = 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
|
492 } |
30 | 493 } |
494 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
495 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
|
496 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
|
497 vboxHandle = null; |
30 | 498 } |
499 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
500 override void releaseWidget () { |
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
|
501 super.releaseWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
502 image = 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
|
503 images = 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
|
504 savedFocus = 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
|
505 defaultButton = saveDefault = null; |
30 | 506 } |
507 | |
37 | 508 bool restoreFocus () { |
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
|
509 if (savedFocus !is null && savedFocus.isDisposed ()) savedFocus = 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
|
510 bool restored = savedFocus !is null && savedFocus.setFocus (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
511 savedFocus = 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
|
512 /* |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
513 * This code is intentionally commented. When no widget |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
514 * has been given focus, some platforms give focus to the |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
515 * default button. Motif doesn't do 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
|
516 */ |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
517 // if (restored) return true; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
518 // if (defaultButton !is null && !defaultButton.isDisposed ()) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
519 // if (defaultButton.setFocus ()) return true; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
520 // } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
521 // 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
|
522 return restored; |
30 | 523 } |
524 | |
525 /** | |
526 * If the argument is not null, sets the receiver's default | |
527 * button to the argument, and if the argument is null, sets | |
528 * the receiver's default button to the first button which | |
529 * was set as the receiver's default button (called the | |
530 * <em>saved default button</em>). If no default button had | |
531 * previously been set, or the saved default button was | |
532 * disposed, the receiver's default button will be set to | |
533 * null. | |
534 * <p> | |
535 * The default button is the button that is selected when | |
536 * the receiver is active and the user presses ENTER. | |
537 * </p> | |
538 * | |
539 * @param button the new default button | |
540 * | |
541 * @exception IllegalArgumentException <ul> | |
542 * <li>ERROR_INVALID_ARGUMENT - if the button has been disposed</li> | |
543 * <li>ERROR_INVALID_PARENT - if the control is not in the same widget tree</li> | |
544 * </ul> | |
71 | 545 * @exception DWTException <ul> |
30 | 546 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
547 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
548 * </ul> | |
549 */ | |
550 public void setDefaultButton (Button button) { | |
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
|
551 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
|
552 GtkWidget* buttonHandle; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
553 if (button !is null) { |
71 | 554 if (button.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT); |
555 if (button.menuShell () !is this) error (DWT.ERROR_INVALID_PARENT); | |
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
|
556 buttonHandle = button.handle; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
557 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
558 saveDefault = defaultButton = button; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
559 OS.gtk_window_set_default (cast(GtkWindow*)topHandle (), buttonHandle); |
30 | 560 } |
561 | |
562 /** | |
563 * Sets the receiver's image to the argument, which may | |
564 * be null. The image is typically displayed by the window | |
565 * manager when the instance is marked as iconified, and | |
566 * may also be displayed somewhere in the trim when the | |
567 * instance is in normal or maximized states. | |
568 * | |
569 * @param image the new image (or null) | |
570 * | |
571 * @exception IllegalArgumentException <ul> | |
572 * <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</li> | |
573 * </ul> | |
71 | 574 * @exception DWTException <ul> |
30 | 575 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
576 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
577 * </ul> | |
578 */ | |
579 public void setImage (Image image) { | |
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
|
580 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
|
581 this.image = image; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
582 _setImages (image !is null ? [image] : null); |
30 | 583 } |
584 | |
585 /** | |
586 * Sets the receiver's images to the argument, which may | |
587 * be an empty array. Images are typically displayed by the | |
588 * window manager when the instance is marked as iconified, | |
589 * and may also be displayed somewhere in the trim when the | |
590 * instance is in normal or maximized states. Depending where | |
591 * the icon is displayed, the platform chooses the icon with | |
592 * the "best" attributes. It is expected that the array will | |
593 * contain the same icon rendered at different sizes, with | |
594 * different depth and transparency attributes. | |
595 * | |
596 * @param images the new image array | |
597 * | |
598 * @exception IllegalArgumentException <ul> | |
599 * <li>ERROR_NULL_ARGUMENT - if the array of images is null</li> | |
600 * <li>ERROR_INVALID_ARGUMENT - if one of the images is null or has been disposed</li> | |
601 * </ul> | |
71 | 602 * @exception DWTException <ul> |
30 | 603 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
604 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
605 * </ul> | |
606 * | |
607 * @since 3.0 | |
608 */ | |
609 public void setImages (Image [] images) { | |
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
|
610 checkWidget (); |
71 | 611 if (images is null) error (DWT.ERROR_INVALID_ARGUMENT); |
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
|
612 for (int i = 0; i < images.length; i++) { |
71 | 613 if (images [i] is null || images [i].isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT); |
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
|
614 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
615 this.images = images; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
616 _setImages (images); |
30 | 617 } |
618 | |
619 /** | |
620 * Sets the maximized state of the receiver. | |
621 * If the argument is <code>true</code> causes the receiver | |
622 * to switch to the maximized state, and if the argument is | |
623 * <code>false</code> and the receiver was previously maximized, | |
624 * causes the receiver to switch back to either the minimized | |
625 * or normal states. | |
626 * <p> | |
627 * Note: The result of intermixing calls to <code>setMaximized(true)</code> | |
628 * and <code>setMinimized(true)</code> will vary by platform. Typically, | |
629 * the behavior will match the platform user's expectations, but not | |
630 * always. This should be avoided if possible. | |
631 * </p> | |
632 * | |
633 * @param maximized the new maximized state | |
634 * | |
71 | 635 * @exception DWTException <ul> |
30 | 636 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
637 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
638 * </ul> | |
639 * | |
640 * @see #setMinimized | |
641 */ | |
37 | 642 public void setMaximized (bool maximized) { |
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
|
643 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
|
644 this.maximized = maximized; |
30 | 645 } |
646 | |
647 /** | |
648 * Sets the receiver's menu bar to the argument, which | |
649 * may be null. | |
650 * | |
651 * @param menu the new menu bar | |
652 * | |
653 * @exception IllegalArgumentException <ul> | |
654 * <li>ERROR_INVALID_ARGUMENT - if the menu has been disposed</li> | |
655 * <li>ERROR_INVALID_PARENT - if the menu is not in the same widget tree</li> | |
656 * </ul> | |
71 | 657 * @exception DWTException <ul> |
30 | 658 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
659 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
660 * </ul> | |
661 */ | |
662 public void setMenuBar (Menu menu) { | |
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
|
663 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
|
664 if (menuBar is menu) 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
|
665 if (menu !is null) { |
71 | 666 if ((menu.style & DWT.BAR) is 0) error (DWT.ERROR_MENU_NOT_BAR); |
667 if (menu.parent !is this) error (DWT.ERROR_INVALID_PARENT); | |
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
|
668 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
669 menuBar = menu; |
30 | 670 } |
671 | |
672 /** | |
673 * Sets the minimized stated of the receiver. | |
674 * If the argument is <code>true</code> causes the receiver | |
675 * to switch to the minimized state, and if the argument is | |
676 * <code>false</code> and the receiver was previously minimized, | |
677 * causes the receiver to switch back to either the maximized | |
678 * or normal states. | |
679 * <p> | |
680 * Note: The result of intermixing calls to <code>setMaximized(true)</code> | |
681 * and <code>setMinimized(true)</code> will vary by platform. Typically, | |
682 * the behavior will match the platform user's expectations, but not | |
683 * always. This should be avoided if possible. | |
684 * </p> | |
685 * | |
686 * @param minimized the new maximized state | |
687 * | |
71 | 688 * @exception DWTException <ul> |
30 | 689 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
690 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
691 * </ul> | |
692 * | |
693 * @see #setMaximized | |
694 */ | |
37 | 695 public void setMinimized (bool minimized) { |
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
|
696 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
|
697 this.minimized = minimized; |
30 | 698 } |
699 | |
700 void setSavedFocus (Control 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
|
701 if (this is control) 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
|
702 savedFocus = control; |
30 | 703 } |
704 | |
705 /** | |
706 * Sets the receiver's text, which is the string that the | |
707 * window manager will typically display as the receiver's | |
708 * <em>title</em>, to the argument, which must not be null. | |
709 * | |
710 * @param string the new text | |
711 * | |
712 * @exception IllegalArgumentException <ul> | |
713 * <li>ERROR_NULL_ARGUMENT - if the text is null</li> | |
714 * </ul> | |
71 | 715 * @exception DWTException <ul> |
30 | 716 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
717 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
718 * </ul> | |
719 */ | |
238 | 720 public void setText (String string) { |
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
|
721 checkWidget(); |
71 | 722 if (string is null) error (DWT.ERROR_NULL_ARGUMENT); |
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
|
723 text = string; |
30 | 724 } |
725 | |
726 void sort (Image [] images) { | |
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
|
727 /* Shell Sort from K&R, pg 108 */ |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
728 int length = images.length; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
729 if (length <= 1) 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
|
730 ImageData [] datas = new ImageData [length]; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
731 for (int i = 0; i < length; i++) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
732 datas [i] = images [i].getImageData (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
733 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
734 for (int gap=length/2; gap>0; gap/=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
|
735 for (int i=gap; i<length; i++) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
736 for (int j=i-gap; j>=0; j-=gap) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
737 if (compare (datas [j], datas [j + gap]) >= 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
|
738 Image swap = images [j]; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
739 images [j] = images [j + gap]; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
740 images [j + gap] = swap; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
741 ImageData swapData = datas [j]; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
742 datas [j] = datas [j + gap]; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
743 datas [j + gap] = swapData; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
744 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
745 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
746 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
747 } |
30 | 748 } |
749 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
750 override bool traverseItem (bool next) { |
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
|
751 return false; |
30 | 752 } |
753 | |
58
a5c274fa5af9
extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents:
38
diff
changeset
|
754 override bool traverseReturn () { |
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
|
755 Button button = defaultButton !is null ? defaultButton: saveDefault; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
756 if (button is null || button.isDisposed ()) 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
|
757 /* |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
758 * Bug in GTK. When a default button that is disabled is |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
759 * activated using the Enter key, GTK GP's. The fix is to |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
760 * detect this case and stop GTK from processing the Enter |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
761 * key. |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
762 */ |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
763 if (!button.isVisible () || !button.isEnabled ()) return true; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
764 auto shellHandle = _getShell ().topHandle (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
58
diff
changeset
|
765 return cast(bool)OS.gtk_window_activate_default (cast(GtkWindow*)shellHandle); |
30 | 766 } |
767 | |
768 } |