annotate dwt/widgets/Button.d @ 66:bb2217c09e61

Fixed signal blocking/unblocking: The right closure is chosen by the user_data value. In the D port the CallbackData struct is used to encapsulate also an instance pointer to the Display. When selecting the closure, the pointer of the CallbackData must be given instead of the integer constant. To make porting easier, value getter are created. They are called 'ud'+NAME.
author Frank Benoit <benoit@tionex.de>
date Sun, 13 Jan 2008 23:50:55 +0100
parents 6537a52fde85
children 295b29fc7d13
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
60
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
1 /*******************************************************************************
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2007 IBM Corporation and others.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 *******************************************************************************/
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 module dwt.widgets.Button;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 import dwt.widgets.Control;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
15 import dwt.internal.gtk.OS;
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
16 import dwt.SWT;
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
17 import dwt.graphics.Point;
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
18 import dwt.graphics.Image;
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
19 import dwt.widgets.ImageList;
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
20 import dwt.widgets.Composite;
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
21 import dwt.events.SelectionListener;
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
22 import dwt.widgets.TypedListener;
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
23 import dwt.widgets.Decorations;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
25 import tango.stdc.stringz;
60
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
26 import tango.io.Stdout;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 /**
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 * Instances of this class represent a selectable user interface object that
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 * issues notification when pressed and released.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 * <dl>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 * <dt><b>Styles:</b></dt>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 * <dd>ARROW, CHECK, PUSH, RADIO, TOGGLE, FLAT</dd>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 * <dd>UP, DOWN, LEFT, RIGHT, CENTER</dd>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 * <dt><b>Events:</b></dt>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 * <dd>Selection</dd>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 * </dl>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 * <p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * Note: Only one of the styles ARROW, CHECK, PUSH, RADIO, and TOGGLE
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * may be specified.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 * </p><p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * Note: Only one of the styles LEFT, RIGHT, and CENTER may be specified.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * </p><p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 * Note: Only one of the styles UP, DOWN, LEFT, and RIGHT may be specified
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * when the ARROW style is specified.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 * </p><p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 * IMPORTANT: This class is intended to be subclassed <em>only</em>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * within the SWT implementation.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 * </p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 */
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
51 public class Button : 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
52 GtkWidget* boxHandle, labelHandle, imageHandle, arrowHandle, groupHandle;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
53 bool selected;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
54 ImageList imageList;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
55 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
56 char[] text;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 /**
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 * Constructs a new instance of this class given its parent
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 * and a style value describing its behavior and appearance.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 * <p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 * The style value is either one of the style constants defined in
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 * class <code>SWT</code> which is applicable to instances of this
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 * class, or must be built by <em>bitwise OR</em>'ing together
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 * (that is, using the <code>int</code> "|" operator) two or more
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 * of those <code>SWT</code> style constants. The class description
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * lists the style constants that are applicable to the class.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 * Style bits are also inherited from superclasses.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * </p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 * @param parent a composite control which will be the parent of the new instance (cannot be null)
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * @param style the style of control to construct
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 * @exception IllegalArgumentException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 * @exception SWTException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 * @see SWT#ARROW
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * @see SWT#CHECK
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * @see SWT#PUSH
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 * @see SWT#RADIO
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 * @see SWT#TOGGLE
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 * @see SWT#FLAT
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 * @see SWT#LEFT
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 * @see SWT#RIGHT
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 * @see SWT#CENTER
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 * @see Widget#checkSubclass
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 * @see Widget#getStyle
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 */
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
94 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
95 super (parent, checkStyle (style));
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 static int checkStyle (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
99 style = checkBits (style, SWT.PUSH, SWT.ARROW, SWT.CHECK, SWT.RADIO, SWT.TOGGLE, 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
100 if ((style & (SWT.PUSH | SWT.TOGGLE)) !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
101 return checkBits (style, SWT.CENTER, SWT.LEFT, SWT.RIGHT, 0, 0, 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
102 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
103 if ((style & (SWT.CHECK | SWT.RADIO)) !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
104 return checkBits (style, SWT.LEFT, SWT.RIGHT, SWT.CENTER, 0, 0, 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
105 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
106 if ((style & SWT.ARROW) !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
107 style |= SWT.NO_FOCUS;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
108 return checkBits (style, SWT.UP, SWT.DOWN, SWT.LEFT, SWT.RIGHT, 0, 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
109 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
110 return style;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 /**
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 * Adds the listener to the collection of listeners who will
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 * be notified when the control is selected by the user, by sending
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 * it one of the messages defined in the <code>SelectionListener</code>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 * interface.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 * <p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 * <code>widgetSelected</code> is called when the control is selected by the user.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 * <code>widgetDefaultSelected</code> is not called.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 * </p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 * @param listener the listener which should be notified
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 * @exception IllegalArgumentException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 * @exception SWTException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 * @see SelectionListener
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 * @see #removeSelectionListener
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 * @see SelectionEvent
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 */
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 public void addSelectionListener (SelectionListener listener) {
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
138 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
139 if (listener is null) error (SWT.ERROR_NULL_ARGUMENT);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
140 TypedListener typedListener = new TypedListener (listener);
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 addListener (SWT.Selection,typedListener);
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 addListener (SWT.DefaultSelection,typedListener);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
145 override public Point computeSize (int wHint, int hHint, bool changed) {
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
146 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
147 if (wHint !is SWT.DEFAULT && wHint < 0) wHint = 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
148 if (hHint !is SWT.DEFAULT && hHint < 0) hHint = 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
149 /*
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 * Feature in GTK, GtkCheckButton and GtkRadioButton allocate
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 * only the minimum size necessary for its child. This causes the child
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 * alignment to fail. The fix is to set the child size to the size
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 * of the 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
154 */
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 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
156 int reqWidth = -1, reqHeight = -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
157 if ((style & (SWT.CHECK | SWT.RADIO)) !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
158 OS.gtk_widget_get_size_request (boxHandle, &reqWidth, &reqHeight);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
159 OS.gtk_widget_set_size_request (boxHandle, -1, -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
160 }
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 Point size = computeNativeSize (handle, wHint, hHint, changed);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
162 if ((style & (SWT.CHECK | SWT.RADIO)) !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
163 OS.gtk_widget_set_size_request (boxHandle, reqWidth, reqHeight);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
164 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
165 if (wHint !is SWT.DEFAULT || hHint !is SWT.DEFAULT) {
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 if ((OS.GTK_WIDGET_FLAGS (handle) & OS.GTK_CAN_DEFAULT) !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
167 GtkBorder border;
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
168 GtkBorder* buffer;
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
169 OS.gtk_widget_style_get1 (handle, OS.default_border.ptr, cast(int*)&buffer );
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
170 if (buffer !is null) {
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
171 border = *buffer;
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 } 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
173 /* Use the GTK+ default value of 1 for each. */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
174 border.left = border.right = border.top = border.bottom = 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
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 if (wHint !is SWT.DEFAULT) size.x += border.left + border.right;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
177 if (hHint !is SWT.DEFAULT) size.y += border.top + border.bottom;
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 }
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 }
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 return size;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
183 override void createHandle (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
184 state |= 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
185 if ((style & SWT.PUSH) is 0) state |= THEME_BACKGROUND;
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 int bits = SWT.ARROW | SWT.TOGGLE | SWT.CHECK | SWT.RADIO | SWT.PUSH;
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 fixedHandle = cast(GtkWidget*)OS.g_object_new (display.gtk_fixed_get_type (), 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
188 if (fixedHandle is null) error (SWT.ERROR_NO_HANDLES);
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 OS.gtk_fixed_set_has_window (cast(GtkFixed*)fixedHandle, 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
190 switch (style & bits) {
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 case SWT.ARROW:
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 int arrow_type = OS.GTK_ARROW_UP;
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 if ((style & SWT.UP) !is 0) arrow_type = OS.GTK_ARROW_UP;
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 if ((style & SWT.DOWN) !is 0) arrow_type = OS.GTK_ARROW_DOWN;
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
195 if ((style & SWT.LEFT) !is 0) arrow_type = OS.GTK_ARROW_LEFT;
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
196 if ((style & SWT.RIGHT) !is 0) arrow_type = OS.GTK_ARROW_RIGHT;
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
197 handle = OS.gtk_button_new ();
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 if (handle is null) error (SWT.ERROR_NO_HANDLES);
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 arrowHandle = OS.gtk_arrow_new (arrow_type, OS.GTK_SHADOW_OUT);
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 if (arrowHandle is null) error (SWT.ERROR_NO_HANDLES);
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 break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
202 case SWT.TOGGLE:
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 handle = OS.gtk_toggle_button_new ();
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 if (handle is null) error (SWT.ERROR_NO_HANDLES);
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 break;
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 case SWT.CHECK:
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 handle = OS.gtk_check_button_new ();
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 if (handle is null) error (SWT.ERROR_NO_HANDLES);
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 break;
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 case SWT.RADIO:
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 /*
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 * Feature in GTK. In GTK, radio button must always be part of
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 * a radio button group. In a GTK radio group, one button is always
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 * selected. This means that it is not possible to have a single
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 * radio button that is unselected. This is necessary to allow
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 * applications to implement their own radio behavior or use radio
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 * buttons outside of radio groups. The fix is to create a hidden
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 * radio button for each radio button we create and add them
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 * to the same group. This allows the visible button to be
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 * unselected.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
221 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
222 groupHandle = cast(GtkWidget*)OS.gtk_radio_button_new (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
223 if (groupHandle is null) error (SWT.ERROR_NO_HANDLES);
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 OS.g_object_ref (groupHandle);
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 OS.gtk_object_sink (cast(GtkObject*)groupHandle);
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 handle = OS.gtk_radio_button_new ( OS.gtk_radio_button_get_group (cast(GtkRadioButton*)groupHandle));
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 if (handle is null) error (SWT.ERROR_NO_HANDLES);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
228 break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
229 case SWT.PUSH:
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
230 default:
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
231 handle = OS.gtk_button_new ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
232 if (handle is null) error (SWT.ERROR_NO_HANDLES);
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 OS.GTK_WIDGET_SET_FLAGS(handle, OS.GTK_CAN_DEFAULT);
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 break;
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 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
236 if ((style & SWT.ARROW) !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
237 OS.gtk_container_add (cast(GtkContainer*)handle, arrowHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
238 } 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
239 boxHandle = OS.gtk_hbox_new (false, 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
240 if (boxHandle is null) error (SWT.ERROR_NO_HANDLES);
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 labelHandle = OS.gtk_label_new_with_mnemonic (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
242 if (labelHandle is null) error (SWT.ERROR_NO_HANDLES);
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 imageHandle = OS.gtk_image_new ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
244 if (imageHandle is null) error (SWT.ERROR_NO_HANDLES);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
245 OS.gtk_container_add (cast(GtkContainer*)handle, boxHandle);
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 OS.gtk_container_add (cast(GtkContainer*)boxHandle, imageHandle);
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 OS.gtk_container_add (cast(GtkContainer*)boxHandle, labelHandle);
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 OS.gtk_container_add (cast(GtkContainer*)fixedHandle, handle);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
251 if ((style & SWT.ARROW) !is 0) return;
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
252 _setAlignment (style & (SWT.LEFT | SWT.CENTER | SWT.RIGHT));
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
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 = "";
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
260 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
261 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
262 if (boxHandle !is null) display.removeWidget (boxHandle);
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 if (labelHandle !is null) display.removeWidget (labelHandle);
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 if (imageHandle !is null) display.removeWidget (imageHandle);
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 if (arrowHandle !is null) display.removeWidget (arrowHandle);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
268 override GtkWidget* fontHandle () {
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
269 if (labelHandle !is null) return labelHandle;
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 return super.fontHandle ();
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 /**
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 * Returns a value which describes the position of the
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 * text or image in the receiver. The value will be one of
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 * <code>LEFT</code>, <code>RIGHT</code> or <code>CENTER</code>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 * unless the receiver is an <code>ARROW</code> button, in
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 * which case, the alignment will indicate the direction of
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 * the arrow (one of <code>LEFT</code>, <code>RIGHT</code>,
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 * <code>UP</code> or <code>DOWN</code>).
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 * @return the alignment
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 * @exception SWTException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 */
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 public int getAlignment () {
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
290 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
291 if ((style & SWT.ARROW) !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
292 if ((style & SWT.UP) !is 0) return SWT.UP;
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 if ((style & SWT.DOWN) !is 0) return SWT.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
294 if ((style & SWT.LEFT) !is 0) return SWT.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
295 if ((style & SWT.RIGHT) !is 0) return SWT.RIGHT;
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 return SWT.UP;
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 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
298 if ((style & SWT.LEFT) !is 0) return SWT.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
299 if ((style & SWT.CENTER) !is 0) return SWT.CENTER;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
300 if ((style & SWT.RIGHT) !is 0) return SWT.RIGHT;
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 return SWT.LEFT;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 /**
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 * Returns the receiver's image if it has one, or null
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 * if it does not.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 * @return the receiver's image
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 * @exception SWTException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 */
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 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
316 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
317 return image;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
320 override char[] 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
321 return getText ();
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 /**
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 * Returns <code>true</code> if the receiver is selected,
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 * and false otherwise.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327 * <p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328 * When the receiver is of type <code>CHECK</code> or <code>RADIO</code>,
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329 * it is selected when it is checked. When it is of type <code>TOGGLE</code>,
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 * it is selected when it is pushed in. If the receiver is of any other type,
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331 * this method returns false.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 * @return the selection state
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 * @exception SWTException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 */
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
340 public bool getSelection () {
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
341 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
342 if ((style & (SWT.CHECK | SWT.RADIO | SWT.TOGGLE)) is 0) 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
343 return cast(bool)OS.gtk_toggle_button_get_active (cast(GtkToggleButton*)handle);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346 /**
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 * Returns the receiver's text, which will be an empty
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 * string if it has never been set or if the receiver is
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 * an <code>ARROW</code> button.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 * @return the receiver's text
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 * @exception SWTException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 */
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
358 public char[] 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
359 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
360 if ((style & SWT.ARROW) !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
361 return text;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
364 override int /*long*/ gtk_button_press_event (GtkWidget* widget, GdkEventButton* event) {
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
365 auto result = super.gtk_button_press_event (widget, event);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
366 if (result !is 0) return result;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
367 if ((style & SWT.RADIO) !is 0) selected = getSelection ();
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 return result;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
371 override int /*long*/ gtk_clicked (GtkWidget* widget) {
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
372 if ((style & SWT.RADIO) !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
373 if ((parent.getStyle () & SWT.NO_RADIO_GROUP) !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
374 setSelection (!selected);
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 } 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
376 selectRadio ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
377 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
378 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
379 postEvent (SWT.Selection);
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 return 0;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
383 override int /*long*/ gtk_focus_in_event (GtkWidget* widget, GdkEventFocus* event) {
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 auto result = super.gtk_focus_in_event (widget, event);
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 // widget could be disposed at this point
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 (handle 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
387 if ((style & SWT.PUSH) !is 0 && OS.GTK_WIDGET_HAS_DEFAULT (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
388 Decorations menuShell = menuShell ();
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 menuShell.defaultButton = 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
390 }
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 result;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
394 override int /*long*/ gtk_focus_out_event (GtkWidget* widget, GdkEventFocus* event) {
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
395 auto result = super.gtk_focus_out_event (widget, event);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
396 // widget could be disposed at this point
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
397 if (handle 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
398 if ((style & SWT.PUSH) !is 0 && !OS.GTK_WIDGET_HAS_DEFAULT (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
399 Decorations menuShell = menuShell ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
400 if (menuShell.defaultButton is 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
401 menuShell.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
402 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
403 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
404 return result;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
407 override int /*long*/ gtk_key_press_event (GtkWidget* widget, GdkEventKey* event) {
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
408 auto result = super.gtk_key_press_event (widget, event);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
409 if (result !is 0) return result;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
410 if ((style & SWT.RADIO) !is 0) selected = getSelection ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
411 return result;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
414 override void hookEvents () {
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
415 super.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
416 OS.g_signal_connect_closure (handle, OS.clicked.ptr, display.closures [CLICKED], 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
417 if (labelHandle !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
418 OS.g_signal_connect_closure_by_id (cast(void*)labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, display.closures [MNEMONIC_ACTIVATE], 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
419 }
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
422 override bool isDescribedByLabel () {
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
423 return false;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
424 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
426 alias Control.mnemonicHit mnemonicHit;
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
427 override bool mnemonicHit (char key) {
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
428 if (labelHandle 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
429 bool result = super.mnemonicHit (labelHandle, 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
430 if (result) 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
431 return result;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
434 alias Control.mnemonicMatch mnemonicMatch;
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
435 override bool mnemonicMatch (char key) {
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
436 if (labelHandle 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
437 return mnemonicMatch (labelHandle, key);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
440 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
441 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
442 if (boxHandle !is null) display.addWidget (boxHandle, 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
443 if (labelHandle !is null) display.addWidget (labelHandle, 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
444 if (imageHandle !is null) display.addWidget (imageHandle, 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
445 if (arrowHandle !is null) display.addWidget (arrowHandle, this);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
448 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
449 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
450 boxHandle = imageHandle = labelHandle = arrowHandle = null;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
453 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
454 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
455 if (groupHandle !is null) OS.g_object_unref (groupHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
456 groupHandle = 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
457 if (imageList !is null) imageList.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
458 imageList = 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
459 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
460 text = null;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
461 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
462
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
463 /**
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
464 * Removes the listener from the collection of listeners who will
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
465 * be notified when the control is selected by the user.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
466 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 * @param listener the listener which should no longer be notified
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
469 * @exception IllegalArgumentException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
472 * @exception SWTException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
474 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 * @see SelectionListener
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
478 * @see #addSelectionListener
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479 */
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 public void removeSelectionListener (SelectionListener listener) {
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
481 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
482 if (listener is null) error (SWT.ERROR_NULL_ARGUMENT);
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 if (eventTable 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
484 eventTable.unhook (SWT.Selection, listener);
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 eventTable.unhook (SWT.DefaultSelection,listener);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
488 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
489 super.resizeHandle (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
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 * Feature in GTK, GtkCheckButton and GtkRadioButton allocate
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 * only the minimum size necessary for its child. This causes the child
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
493 * alignment to fail. The fix is to set the child size to the size
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
494 * of the 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
495 */
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 if ((style & (SWT.CHECK | SWT.RADIO)) !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
497 OS.gtk_widget_set_size_request (boxHandle, width, -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
498 }
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
500
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501 void selectRadio () {
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
502 /*
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 * This code is intentionally commented. When two groups
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 * of radio buttons with the same parent are separated by
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 * another control, the correct behavior should be that
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
506 * the two groups act independently. This is consistent
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
507 * with radio tool and menu items. The commented 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
508 * implements this behavior.
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 */
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 // 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
511 // Control [] children = parent._getChildren ();
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 // while (index < children.length && children [index] !is this) 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
513 // int i = index - 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
514 // while (i >= 0 && children [i].setRadioSelection (false)) --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
515 // int j = index + 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
516 // while (j < children.length && children [j].setRadioSelection (false)) 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
517 // setSelection (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 Control [] children = parent._getChildren ();
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 for (int i=0; i<children.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
520 Control child = children [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
521 if (this !is child) child.setRadioSelection (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 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
523 setSelection (true);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
524 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
525
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526 /**
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
527 * Controls how text, images and arrows will be displayed
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
528 * in the receiver. The argument should be one of
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529 * <code>LEFT</code>, <code>RIGHT</code> or <code>CENTER</code>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
530 * unless the receiver is an <code>ARROW</code> button, in
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
531 * which case, the argument indicates the direction of
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
532 * the arrow (one of <code>LEFT</code>, <code>RIGHT</code>,
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
533 * <code>UP</code> or <code>DOWN</code>).
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
534 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 * @param alignment the new alignment
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
536 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 * @exception SWTException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
540 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
541 */
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 public void setAlignment (int alignment) {
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
543 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
544 _setAlignment (alignment);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
546
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
547 void _setAlignment (int alignment) {
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
548 if ((style & SWT.ARROW) !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
549 if ((style & (SWT.UP | SWT.DOWN | SWT.LEFT | SWT.RIGHT)) 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
550 style &= ~(SWT.UP | SWT.DOWN | SWT.LEFT | SWT.RIGHT);
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 style |= alignment & (SWT.UP | SWT.DOWN | SWT.LEFT | SWT.RIGHT);
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 int arrow_type = OS.GTK_ARROW_UP;
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 bool isRTL = (style & SWT.RIGHT_TO_LEFT) !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
554 switch (alignment) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
555 case SWT.UP: arrow_type = OS.GTK_ARROW_UP; break;
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 case SWT.DOWN: arrow_type = OS.GTK_ARROW_DOWN; break;
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 case SWT.LEFT: arrow_type = isRTL ? OS.GTK_ARROW_RIGHT : OS.GTK_ARROW_LEFT; break;
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 case SWT.RIGHT: arrow_type = isRTL ? OS.GTK_ARROW_LEFT : OS.GTK_ARROW_RIGHT; break;
55
93981635e709 Checked and inserted missing default switch cases.
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
559 default:
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
560 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
561 OS.gtk_arrow_set (cast(GtkArrow*)arrowHandle, arrow_type, OS.GTK_SHADOW_OUT);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
562 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
563 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
564 if ((alignment & (SWT.LEFT | SWT.RIGHT | SWT.CENTER)) 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
565 style &= ~(SWT.LEFT | SWT.RIGHT | SWT.CENTER);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
566 style |= alignment & (SWT.LEFT | SWT.RIGHT | SWT.CENTER);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
567 /* Alignment not honoured when image and text are visible */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
568 bool bothVisible = OS.GTK_WIDGET_VISIBLE (labelHandle) && OS.GTK_WIDGET_VISIBLE (imageHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
569 if (bothVisible) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
570 if ((style & (SWT.RADIO | SWT.CHECK)) !is 0) alignment = SWT.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
571 if ((style & (SWT.PUSH | SWT.TOGGLE)) !is 0) alignment = SWT.CENTER;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
572 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
573 if ((alignment & SWT.LEFT) !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
574 if (bothVisible) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
575 OS.gtk_box_set_child_packing (cast(GtkBox*)boxHandle, labelHandle, false, false, 0, OS.GTK_PACK_START);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
576 OS.gtk_box_set_child_packing (cast(GtkBox*)boxHandle, imageHandle, false, false, 0, OS.GTK_PACK_START);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
577 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
578 OS.gtk_misc_set_alignment (cast(GtkMisc*)labelHandle, 0.0f, 0.5f);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
579 OS.gtk_label_set_justify (cast(GtkLabel*)labelHandle, OS.GTK_JUSTIFY_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
580 OS.gtk_misc_set_alignment (cast(GtkMisc*)imageHandle, 0.0f, 0.5f);
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 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
582 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
583 if ((alignment & SWT.CENTER) !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
584 if (bothVisible) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
585 OS.gtk_box_set_child_packing (cast(GtkBox*)boxHandle, labelHandle, true, true, 0, OS.GTK_PACK_END);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
586 OS.gtk_box_set_child_packing (cast(GtkBox*)boxHandle, imageHandle, true, true, 0, OS.GTK_PACK_START);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
587 OS.gtk_misc_set_alignment (cast(GtkMisc*)labelHandle, 0f, 0.5f);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
588 OS.gtk_misc_set_alignment (cast(GtkMisc*)imageHandle, 1f, 0.5f);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
589 } 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
590 OS.gtk_misc_set_alignment (cast(GtkMisc*)labelHandle, 0.5f, 0.5f);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
591 OS.gtk_label_set_justify (cast(GtkLabel*)labelHandle, OS.GTK_JUSTIFY_CENTER);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
592 OS.gtk_misc_set_alignment (cast(GtkMisc*)imageHandle, 0.5f, 0.5f);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
593 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
594 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
595 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
596 if ((alignment & SWT.RIGHT) !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
597 if (bothVisible) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
598 OS.gtk_box_set_child_packing (cast(GtkBox*)boxHandle, labelHandle, false, false, 0, OS.GTK_PACK_END);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
599 OS.gtk_box_set_child_packing (cast(GtkBox*)boxHandle, imageHandle, false, false, 0, OS.GTK_PACK_END);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
600 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
601 OS.gtk_misc_set_alignment (cast(GtkMisc*)labelHandle, 1.0f, 0.5f);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
602 OS.gtk_label_set_justify (cast(GtkLabel*)labelHandle, OS.GTK_JUSTIFY_RIGHT);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
603 OS.gtk_misc_set_alignment (cast(GtkMisc*)imageHandle, 1.0f, 0.5f);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
604 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
605 }
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
606 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
607
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
608 alias Control.setBackgroundColor setBackgroundColor;
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
609 override void setBackgroundColor (GdkColor* color) {
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 super.setBackgroundColor (color);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
611 setBackgroundColor(fixedHandle, color);
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 if (labelHandle !is null) setBackgroundColor(labelHandle, color);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
613 if (imageHandle !is null) setBackgroundColor(imageHandle, color);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
614 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
615
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
616 override void setFontDescription (PangoFontDescription* font) {
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
617 super.setFontDescription (font);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
618 if (labelHandle !is null) OS.gtk_widget_modify_font (labelHandle, font);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
619 if (imageHandle !is null) OS.gtk_widget_modify_font (imageHandle, font);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
620 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
621
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
622 override bool setRadioSelection (bool value) {
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
623 if ((style & SWT.RADIO) is 0) 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
624 if (getSelection () !is 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
625 setSelection (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
626 postEvent (SWT.Selection);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
627 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
628 return true;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
629 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
630
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
631 alias Control.setForegroundColor setForegroundColor;
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
632 override void setForegroundColor (GdkColor* color) {
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
633 super.setForegroundColor (color);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
634 setForegroundColor (fixedHandle, color);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
635 if (labelHandle !is null) setForegroundColor (labelHandle, color);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
636 if (imageHandle !is null) setForegroundColor (imageHandle, color);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
637 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
638
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
639 /**
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
640 * Sets the receiver's image to the argument, which may be
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
641 * <code>null</code> indicating that no image should be displayed.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
642 * <p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
643 * Note that a Button can display an image and text simultaneously
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
644 * on Windows (starting with XP), GTK+ and OSX. On other platforms,
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
645 * a Button that has an image and text set into it will display the
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
646 * image or text that was set most recently.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
647 * </p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
648 * @param image the image to display on the receiver (may be <code>null</code>)
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
649 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
650 * @exception IllegalArgumentException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
651 * <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
652 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
653 * @exception SWTException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
654 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
655 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
656 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
657 */
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
658 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
659 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
660 if ((style & SWT.ARROW) !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
661 if (imageList !is null) imageList.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
662 imageList = 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
663 if (image !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
664 if (image.isDisposed()) error (SWT.ERROR_INVALID_ARGUMENT);
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 imageList = new ImageList ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
666 int imageIndex = imageList.add (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
667 auto pixbuf = imageList.getPixbuf (imageIndex);
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 OS.gtk_image_set_from_pixbuf (cast(GtkImage*)imageHandle, 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
669 if (text.length is 0) OS.gtk_widget_hide (labelHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
670 OS.gtk_widget_show (imageHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
671 } 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
672 OS.gtk_image_set_from_pixbuf (cast(GtkImage*)imageHandle, 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
673 OS.gtk_widget_show (labelHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
674 OS.gtk_widget_hide (imageHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
675 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
676 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
677 _setAlignment (style);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
678 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
679
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
680 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
681 super.setOrientation ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
682 if ((style & SWT.RIGHT_TO_LEFT) !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
683 if (labelHandle !is null) OS.gtk_widget_set_direction (labelHandle, 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
684 if (imageHandle !is null) OS.gtk_widget_set_direction (imageHandle, 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
685 if (arrowHandle !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
686 switch (style & (SWT.LEFT | SWT.RIGHT)) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
687 case SWT.LEFT: OS.gtk_arrow_set (cast(GtkArrow*)arrowHandle, OS.GTK_ARROW_RIGHT, OS.GTK_SHADOW_OUT); break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
688 case SWT.RIGHT: OS.gtk_arrow_set (cast(GtkArrow*)arrowHandle, OS.GTK_ARROW_LEFT, OS.GTK_SHADOW_OUT); break;
55
93981635e709 Checked and inserted missing default switch cases.
Frank Benoit <benoit@tionex.de>
parents: 44
diff changeset
689 default:
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
690 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
691 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
692 }
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
693 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
694
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
695 /**
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
696 * Sets the selection state of the receiver, if it is of type <code>CHECK</code>,
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
697 * <code>RADIO</code>, or <code>TOGGLE</code>.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
698 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
699 * <p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
700 * When the receiver is of type <code>CHECK</code> or <code>RADIO</code>,
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
701 * it is selected when it is checked. When it is of type <code>TOGGLE</code>,
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
702 * it is selected when it is pushed in.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
703 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
704 * @param selected the new selection state
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
705 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
706 * @exception SWTException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
707 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
708 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
709 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
710 */
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
711 public void setSelection (bool selected) {
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
712 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
713 if ((style & (SWT.CHECK | SWT.RADIO | SWT.TOGGLE)) is 0) return;
66
bb2217c09e61 Fixed signal blocking/unblocking:
Frank Benoit <benoit@tionex.de>
parents: 60
diff changeset
714 OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCLICKED);
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
715 OS.gtk_toggle_button_set_active (cast(GtkToggleButton*)handle, selected);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
716 if ((style & SWT.RADIO) !is 0) OS.gtk_toggle_button_set_active (cast(GtkToggleButton*)groupHandle, !selected);
66
bb2217c09e61 Fixed signal blocking/unblocking:
Frank Benoit <benoit@tionex.de>
parents: 60
diff changeset
717 OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCLICKED);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
718 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
719
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
720 /**
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
721 * Sets the receiver's text.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
722 * <p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
723 * This method sets the button label. The label may include
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
724 * the mnemonic character but must not contain line delimiters.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
725 * </p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
726 * <p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
727 * Mnemonics are indicated by an '&amp;' that causes the next
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
728 * character to be the mnemonic. When the user presses a
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
729 * key sequence that matches the mnemonic, a selection
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
730 * event occurs. On most platforms, the mnemonic appears
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
731 * underlined but may be emphasized in a platform specific
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
732 * manner. The mnemonic indicator character '&amp;' can be
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
733 * escaped by doubling it in the string, causing a single
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
734 * '&amp;' to be displayed.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
735 * </p><p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
736 * Note that a Button can display an image and text simultaneously
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
737 * on Windows (starting with XP), GTK+ and OSX. On other platforms,
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
738 * a Button that has an image and text set into it will display the
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
739 * image or text that was set most recently.
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
740 * </p>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
741 * @param string the new text
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
742 *
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
743 * @exception IllegalArgumentException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
744 * <li>ERROR_NULL_ARGUMENT - if the text is null</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
745 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
746 * @exception SWTException <ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
747 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
748 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
749 * </ul>
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
750 */
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
751 public void setText (char[] 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
752 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
753 if (string is null) error (SWT.ERROR_NULL_ARGUMENT);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
754 if ((style & SWT.ARROW) !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
755 text = string;
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 char [] chars = fixMnemonic (string);
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 OS.gtk_label_set_text_with_mnemonic (cast(GtkLabel*)labelHandle, toStringz(chars));
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 if (image is null) OS.gtk_widget_hide (imageHandle);
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 OS.gtk_widget_show (labelHandle);
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 _setAlignment (style);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
761 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
762
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
763 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
764 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
765 if (boxHandle !is null) OS.gtk_widget_show (boxHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
766 if (labelHandle !is null) OS.gtk_widget_show (labelHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
767 if (arrowHandle !is null) OS.gtk_widget_show (arrowHandle);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
768 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
769
44
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
770 alias Control.traversalCode traversalCode;
dfcb4aee42d4 Button and ImageList
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
771 override int traversalCode (int key, GdkEventKey* event) {
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
772 int code = super.traversalCode (key, event);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
773 if ((style & SWT.RADIO) !is 0) code |= SWT.TRAVERSE_ARROW_NEXT | SWT.TRAVERSE_ARROW_PREVIOUS;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 58
diff changeset
774 return code;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
775 }
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
776
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
777 }