Mercurial > projects > dwt-linux
annotate dwt/widgets/TrayItem.d @ 255:5a30aa9820f3
removed tango.stdc.stringz imports and allow null for arrays and string arguments.
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 15 Jun 2008 22:32:20 +0200 |
parents | 380bad9f6852 |
children | c0d810de7093 |
rev | line source |
---|---|
72 | 1 /******************************************************************************* |
47 | 2 * Copyright (c) 2000, 2007 IBM Corporation and others. |
3 * All rights reserved. This program and the accompanying materials | |
4 * are made available under the terms of the Eclipse Public License v1.0 | |
5 * which accompanies this distribution, and is available at | |
6 * http://www.eclipse.org/legal/epl-v10.html | |
7 * | |
8 * Contributors: | |
9 * IBM Corporation - initial API and implementation | |
72 | 10 * Port to the D programming language: |
11 * Frank Benoit <benoit@tionex.de> | |
47 | 12 *******************************************************************************/ |
13 module dwt.widgets.TrayItem; | |
14 | |
238 | 15 import dwt.dwthelper.utils; |
16 | |
71 | 17 import dwt.DWT; |
47 | 18 import dwt.widgets.Tray; |
19 import dwt.widgets.ToolTip; | |
20 import dwt.widgets.ImageList; | |
21 import dwt.widgets.Item; | |
22 import dwt.events.SelectionListener; | |
23 import dwt.events.SelectionEvent; | |
24 import dwt.events.MenuDetectListener; | |
25 import dwt.widgets.TypedListener; | |
26 import dwt.graphics.Image; | |
27 import dwt.graphics.Rectangle; | |
28 import dwt.graphics.Region; | |
29 import dwt.internal.gtk.OS; | |
30 | |
31 import Math = tango.math.Math; | |
32 import tango.util.Convert; | |
33 | |
34 /** | |
35 * Instances of this class represent icons that can be placed on the | |
36 * system tray or task bar status area. | |
37 * <p> | |
38 * <dl> | |
39 * <dt><b>Styles:</b></dt> | |
40 * <dd>(none)</dd> | |
41 * <dt><b>Events:</b></dt> | |
42 * <dd>DefaultSelection, MenuDetect, Selection</dd> | |
43 * </dl> | |
44 * </p><p> | |
45 * IMPORTANT: This class is <em>not</em> intended to be subclassed. | |
46 * </p> | |
47 * | |
48 * @since 3.0 | |
49 */ | |
50 public class TrayItem : Item { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
51 Tray parent; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
52 ToolTip toolTip; |
238 | 53 String toolTipText; |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
54 GtkWidget* imageHandle; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
55 GtkWidget* tooltipsHandle; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
56 ImageList imageList; |
47 | 57 |
58 /** | |
59 * Constructs a new instance of this class given its parent | |
60 * (which must be a <code>Tray</code>) and a style value | |
61 * describing its behavior and appearance. The item is added | |
62 * to the end of the items maintained by its parent. | |
63 * <p> | |
64 * The style value is either one of the style constants defined in | |
71 | 65 * class <code>DWT</code> which is applicable to instances of this |
47 | 66 * class, or must be built by <em>bitwise OR</em>'ing together |
67 * (that is, using the <code>int</code> "|" operator) two or more | |
71 | 68 * of those <code>DWT</code> style constants. The class description |
47 | 69 * lists the style constants that are applicable to the class. |
70 * Style bits are also inherited from superclasses. | |
71 * </p> | |
72 * | |
73 * @param parent a composite control which will be the parent of the new instance (cannot be null) | |
74 * @param style the style of control to construct | |
75 * | |
76 * @exception IllegalArgumentException <ul> | |
77 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> | |
78 * </ul> | |
71 | 79 * @exception DWTException <ul> |
47 | 80 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> |
81 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> | |
82 * </ul> | |
83 * | |
71 | 84 * @see DWT |
47 | 85 * @see Widget#checkSubclass |
86 * @see Widget#getStyle | |
87 */ | |
88 public this (Tray 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:
47
diff
changeset
|
89 super (parent, style); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
90 this.parent = parent; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
91 createWidget (parent.getItemCount ()); |
47 | 92 } |
93 | |
94 /** | |
95 * Adds the listener to the collection of listeners who will | |
96 * be notified when the platform-specific context menu trigger | |
97 * has occurred, by sending it one of the messages defined in | |
98 * the <code>MenuDetectListener</code> interface. | |
99 * | |
100 * @param listener the listener which should be notified | |
101 * | |
102 * @exception IllegalArgumentException <ul> | |
103 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> | |
104 * </ul> | |
71 | 105 * @exception DWTException <ul> |
47 | 106 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
107 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
108 * </ul> | |
109 * | |
110 * @see MenuDetectListener | |
111 * @see #removeMenuDetectListener | |
112 * | |
113 * @since 3.3 | |
114 */ | |
115 public void addMenuDetectListener (MenuDetectListener listener) { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
116 checkWidget (); |
71 | 117 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
118 TypedListener typedListener = new TypedListener (listener); |
71 | 119 addListener (DWT.MenuDetect, typedListener); |
47 | 120 } |
121 | |
122 /** | |
123 * Adds the listener to the collection of listeners who will | |
124 * be notified when the receiver is selected by the user, by sending | |
125 * it one of the messages defined in the <code>SelectionListener</code> | |
126 * interface. | |
127 * <p> | |
128 * <code>widgetSelected</code> is called when the receiver is selected | |
129 * <code>widgetDefaultSelected</code> is called when the receiver is double-clicked | |
130 * </p> | |
131 * | |
132 * @param listener the listener which should be notified when the receiver is selected by the user | |
133 * | |
134 * @exception IllegalArgumentException <ul> | |
135 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> | |
136 * </ul> | |
71 | 137 * @exception DWTException <ul> |
47 | 138 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
139 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
140 * </ul> | |
141 * | |
142 * @see SelectionListener | |
143 * @see #removeSelectionListener | |
144 * @see SelectionEvent | |
145 */ | |
146 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:
47
diff
changeset
|
147 checkWidget (); |
71 | 148 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
149 TypedListener typedListener = new TypedListener (listener); |
71 | 150 addListener (DWT.Selection, typedListener); |
151 addListener (DWT.DefaultSelection, typedListener); | |
47 | 152 } |
153 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
154 protected override void checkSubclass () { |
71 | 155 if (!isValidSubclass ()) error (DWT.ERROR_INVALID_SUBCLASS); |
47 | 156 } |
157 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
158 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:
47
diff
changeset
|
159 super.createWidget (index); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
160 parent.createItem (this, index); |
47 | 161 } |
162 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
163 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:
47
diff
changeset
|
164 state |= HANDLE; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
165 handle = OS.gtk_plug_new (0); |
71 | 166 if (handle is null) error (DWT.ERROR_NO_HANDLES); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
167 imageHandle = OS.gtk_image_new (); |
71 | 168 if (imageHandle is null) error (DWT.ERROR_NO_HANDLES); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
169 OS.gtk_container_add (cast(GtkContainer*)handle, imageHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
170 OS.gtk_widget_show (handle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
171 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:
47
diff
changeset
|
172 auto id = OS.gtk_plug_get_id (cast(GtkPlug*)handle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
173 int monitor = 0; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
174 auto screen = OS.gdk_screen_get_default (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
175 if (screen !is null) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
176 monitor = OS.gdk_screen_get_number (screen); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
177 } |
238 | 178 auto trayAtom = OS.gdk_atom_intern (toStringz("_NET_SYSTEM_TRAY_S" ~ to!(String)(monitor)), true); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
179 auto xTrayAtom = OS.gdk_x11_atom_to_xatom (trayAtom); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
180 auto xDisplay = OS.GDK_DISPLAY (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
181 auto trayWindow = OS.XGetSelectionOwner (xDisplay, xTrayAtom); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
182 auto messageAtom = OS.gdk_atom_intern (toStringz("_NET_SYSTEM_TRAY_OPCODE"), true); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
183 auto xMessageAtom = OS.gdk_x11_atom_to_xatom (messageAtom); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
184 XClientMessageEvent* event = cast(XClientMessageEvent*)OS.g_malloc (XClientMessageEvent.sizeof);; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
185 event.type = OS.ClientMessage; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
186 event.window = trayWindow; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
187 event.message_type = xMessageAtom; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
188 event.format = 32; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
189 event.data.l [0] = OS.GDK_CURRENT_TIME; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
190 event.data.l [1] = OS.SYSTEM_TRAY_REQUEST_DOCK; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
191 event.data.l [2] = id; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
192 OS.XSendEvent (xDisplay, trayWindow, false, OS.NoEventMask, cast(XEvent*) event); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
193 OS.g_free (event); |
47 | 194 } |
195 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
196 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:
47
diff
changeset
|
197 super.deregister (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
198 display.removeWidget (imageHandle); |
47 | 199 } |
200 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
201 override void destroyWidget () { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
202 parent.destroyItem (this); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
203 releaseHandle (); |
47 | 204 } |
205 | |
206 /** | |
207 * Returns the receiver's parent, which must be a <code>Tray</code>. | |
208 * | |
209 * @return the receiver's parent | |
210 * | |
71 | 211 * @exception DWTException <ul> |
47 | 212 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
213 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
214 * </ul> | |
215 * | |
216 * @since 3.2 | |
217 */ | |
218 public Tray getParent () { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
219 checkWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
220 return parent; |
47 | 221 } |
222 | |
223 /** | |
224 * Returns the receiver's tool tip, or null if it has | |
225 * not been set. | |
226 * | |
227 * @return the receiver's tool tip text | |
228 * | |
71 | 229 * @exception DWTException <ul> |
47 | 230 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
231 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
232 * </ul> | |
233 * | |
234 * @since 3.2 | |
235 */ | |
236 public ToolTip getToolTip () { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
237 checkWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
238 return toolTip; |
47 | 239 } |
240 | |
241 /** | |
242 * Returns the receiver's tool tip text, or null if it has | |
243 * not been set. | |
244 * | |
245 * @return the receiver's tool tip text | |
246 * | |
71 | 247 * @exception DWTException <ul> |
47 | 248 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
249 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
250 * </ul> | |
251 */ | |
238 | 252 public String getToolTipText () { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
253 checkWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
254 return toolTipText; |
47 | 255 } |
256 | |
257 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:
47
diff
changeset
|
258 if (event.type is OS.GDK_3BUTTON_PRESS) return 0; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
259 if (event.button is 3 && event.type is OS.GDK_BUTTON_PRESS) { |
71 | 260 sendEvent (DWT.MenuDetect); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
261 return 0; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
262 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
263 if (event.type is OS.GDK_2BUTTON_PRESS) { |
71 | 264 postEvent (DWT.DefaultSelection); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
265 } else { |
71 | 266 postEvent (DWT.Selection); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
267 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
268 return 0; |
47 | 269 } |
270 | |
271 override int /*long*/ gtk_size_allocate (GtkWidget* widget, int /*long*/ allocation) { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
272 if (image !is null && image.mask !is null) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
273 if (OS.gdk_drawable_get_depth (image.mask) is 1) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
274 int xoffset = cast(int) Math.floor (OS.GTK_WIDGET_X (widget) + ((OS.GTK_WIDGET_WIDTH (widget) - OS.GTK_WIDGET_REQUISITION_WIDTH (widget)) * 0.5) + 0.5); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
275 int yoffset = cast(int) Math.floor (OS.GTK_WIDGET_Y (widget) + ((OS.GTK_WIDGET_HEIGHT (widget) - OS.GTK_WIDGET_REQUISITION_HEIGHT (widget)) * 0.5) + 0.5); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
276 Rectangle b = image.getBounds(); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
277 auto gdkImage = OS.gdk_drawable_get_image (image.mask, 0, 0, b.width, b.height); |
71 | 278 if (gdkImage is null) DWT.error(DWT.ERROR_NO_HANDLES); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
279 byte[] maskData = (cast(byte*)gdkImage.mem)[ 0 .. gdkImage.bpl * gdkImage.height].dup; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
280 Region region = new Region (display); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
281 for (int y = 0; y < b.height; y++) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
282 for (int x = 0; x < b.width; x++) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
283 int index = (y * gdkImage.bpl) + (x >> 3); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
284 int theByte = maskData [index] & 0xFF; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
285 int mask = 1 << (x & 0x7); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
286 if ((theByte & mask) !is 0) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
287 region.add (xoffset + x, yoffset + y, 1, 1); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
288 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
289 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
290 } |
47 | 291 OS.g_object_unref (gdkImage); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
292 OS.gtk_widget_realize (handle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
293 auto window = OS.GTK_WIDGET_WINDOW (handle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
294 OS.gdk_window_shape_combine_region (window, region.handle, 0, 0); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
295 region.dispose (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
296 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
297 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
298 return 0; |
47 | 299 } |
300 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
301 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:
47
diff
changeset
|
302 int eventMask = OS.GDK_BUTTON_PRESS_MASK; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
303 OS.gtk_widget_add_events (handle, eventMask); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
304 OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_PRESS_EVENT], 0, display.closures [BUTTON_PRESS_EVENT], false); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
305 OS.g_signal_connect_closure_by_id (imageHandle, display.signalIds [SIZE_ALLOCATE], 0, display.closures [SIZE_ALLOCATE], false); |
47 | 306 } |
307 | |
308 /** | |
309 * Returns <code>true</code> if the receiver is visible and | |
310 * <code>false</code> otherwise. | |
311 * | |
312 * @return the receiver's visibility | |
313 * | |
71 | 314 * @exception DWTException <ul> |
47 | 315 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
316 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
317 * </ul> | |
318 */ | |
319 public bool getVisible () { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
320 checkWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
321 return OS.GTK_WIDGET_VISIBLE (handle); |
47 | 322 } |
323 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
324 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:
47
diff
changeset
|
325 super.register (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
326 display.addWidget (imageHandle, this); |
47 | 327 } |
328 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
329 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:
47
diff
changeset
|
330 if (handle !is null) OS.gtk_widget_destroy (handle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
331 handle = imageHandle = null; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
332 super.releaseHandle (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
333 parent = null; |
47 | 334 } |
335 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
336 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:
47
diff
changeset
|
337 super.releaseWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
338 if (tooltipsHandle !is null) OS.g_object_unref (tooltipsHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
339 tooltipsHandle = null; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
340 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:
47
diff
changeset
|
341 imageList = null; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
342 toolTipText = null; |
47 | 343 } |
344 | |
345 /** | |
346 * Removes the listener from the collection of listeners who will | |
347 * be notified when the platform-specific context menu trigger has | |
348 * occurred. | |
349 * | |
350 * @param listener the listener which should no longer be notified | |
351 * | |
352 * @exception IllegalArgumentException <ul> | |
353 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> | |
354 * </ul> | |
71 | 355 * @exception DWTException <ul> |
47 | 356 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
357 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
358 * </ul> | |
359 * | |
360 * @see MenuDetectListener | |
361 * @see #addMenuDetectListener | |
362 * | |
363 * @since 3.3 | |
364 */ | |
365 public void removeMenuDetectListener (MenuDetectListener listener) { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
366 checkWidget (); |
71 | 367 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
368 if (eventTable is null) return; |
71 | 369 eventTable.unhook (DWT.MenuDetect, listener); |
47 | 370 } |
371 | |
372 /** | |
373 * Removes the listener from the collection of listeners who will | |
374 * be notified when the receiver is selected by the user. | |
375 * | |
376 * @param listener the listener which should no longer be notified | |
377 * | |
378 * @exception IllegalArgumentException <ul> | |
379 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> | |
380 * </ul> | |
71 | 381 * @exception DWTException <ul> |
47 | 382 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
383 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
384 * </ul> | |
385 * | |
386 * @see SelectionListener | |
387 * @see #addSelectionListener | |
388 */ | |
389 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:
47
diff
changeset
|
390 checkWidget (); |
71 | 391 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
392 if (eventTable is null) return; |
71 | 393 eventTable.unhook (DWT.Selection, listener); |
394 eventTable.unhook (DWT.DefaultSelection, listener); | |
47 | 395 } |
396 | |
397 /** | |
398 * Sets the receiver's image. | |
399 * | |
400 * @param image the new image | |
401 * | |
402 * @exception IllegalArgumentException <ul> | |
403 * <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</li> | |
404 * </ul> | |
71 | 405 * @exception DWTException <ul> |
47 | 406 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
407 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
408 * </ul> | |
409 */ | |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
72
diff
changeset
|
410 public override 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:
47
diff
changeset
|
411 checkWidget (); |
71 | 412 if (image !is null && image.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
413 this.image = image; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
414 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:
47
diff
changeset
|
415 Rectangle rect = image.getBounds (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
416 OS.gtk_widget_set_size_request (handle, rect.width, rect.height); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
417 if (imageList is null) imageList = new ImageList (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
418 int imageIndex = imageList.indexOf (image); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
419 if (imageIndex is -1) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
420 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:
47
diff
changeset
|
421 } else { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
422 imageList.put (imageIndex, image); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
423 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
424 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:
47
diff
changeset
|
425 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:
47
diff
changeset
|
426 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:
47
diff
changeset
|
427 } else { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
428 OS.gtk_widget_set_size_request (handle, 1, 1); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
429 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:
47
diff
changeset
|
430 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:
47
diff
changeset
|
431 } |
47 | 432 } |
433 | |
434 /** | |
435 * Sets the receiver's tool tip to the argument, which | |
436 * may be null indicating that no tool tip should be shown. | |
437 * | |
438 * @param toolTip the new tool tip (or null) | |
439 * | |
71 | 440 * @exception DWTException <ul> |
47 | 441 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
442 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
443 * </ul> | |
444 * | |
445 * @since 3.2 | |
446 */ | |
447 public void setToolTip (ToolTip toolTip) { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
448 checkWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
449 ToolTip oldTip = this.toolTip, newTip = toolTip; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
450 if (oldTip !is null) oldTip.item = null; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
451 this.toolTip = newTip; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
452 if (newTip !is null) newTip.item = this; |
47 | 453 } |
454 | |
455 /** | |
456 * Sets the receiver's tool tip text to the argument, which | |
457 * may be null indicating that no tool tip text should be shown. | |
458 * | |
459 * @param value the new tool tip text (or null) | |
460 * | |
71 | 461 * @exception DWTException <ul> |
47 | 462 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
463 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
464 * </ul> | |
465 */ | |
238 | 466 public void setToolTipText (String string) { |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
467 checkWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
468 toolTipText = string; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
469 char* buffer = null; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
470 if (string !is null && string.length > 0) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
471 buffer = toStringz( string ); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
472 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
473 if (tooltipsHandle is null) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
474 tooltipsHandle = cast(GtkWidget*)OS.gtk_tooltips_new (); |
71 | 475 if (tooltipsHandle is null) error (DWT.ERROR_NO_HANDLES); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
476 OS.g_object_ref (cast(GObject*)tooltipsHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
477 OS.gtk_object_sink (cast(GtkObject*)tooltipsHandle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
478 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
479 OS.gtk_tooltips_set_tip (cast(GtkTooltips*)tooltipsHandle, handle, buffer, null); |
47 | 480 } |
481 | |
482 /** | |
483 * Makes the receiver visible if the argument is <code>true</code>, | |
484 * and makes it invisible otherwise. | |
485 * | |
486 * @param visible the new visibility state | |
487 * | |
71 | 488 * @exception DWTException <ul> |
47 | 489 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
490 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
491 * </ul> | |
492 */ | |
493 public void setVisible (bool visible) { | |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
494 checkWidget (); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
495 if (OS.GTK_WIDGET_VISIBLE (handle) is visible) return; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
496 if (visible) { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
497 /* |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
498 * It is possible (but unlikely), that application |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
499 * code could have disposed the widget in the show |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
500 * event. If this happens, just return. |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
501 */ |
71 | 502 sendEvent (DWT.Show); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
503 if (isDisposed ()) return; |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
504 OS.gtk_widget_show (handle); |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
505 } else { |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
506 OS.gtk_widget_hide (handle); |
71 | 507 sendEvent (DWT.Hide); |
59
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
508 } |
47 | 509 } |
510 } |