Mercurial > projects > dwt-linux
annotate dwt/widgets/TrayItem.d @ 238:380bad9f6852
reverted char[] to String
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 05 May 2008 00:42:55 +0200 |
parents | 17f8449522fd |
children | 5a30aa9820f3 |
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.stdc.stringz; | |
33 import tango.util.Convert; | |
34 | |
35 /** | |
36 * Instances of this class represent icons that can be placed on the | |
37 * system tray or task bar status area. | |
38 * <p> | |
39 * <dl> | |
40 * <dt><b>Styles:</b></dt> | |
41 * <dd>(none)</dd> | |
42 * <dt><b>Events:</b></dt> | |
43 * <dd>DefaultSelection, MenuDetect, Selection</dd> | |
44 * </dl> | |
45 * </p><p> | |
46 * IMPORTANT: This class is <em>not</em> intended to be subclassed. | |
47 * </p> | |
48 * | |
49 * @since 3.0 | |
50 */ | |
51 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
|
52 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
|
53 ToolTip toolTip; |
238 | 54 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
|
55 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
|
56 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
|
57 ImageList imageList; |
47 | 58 |
59 /** | |
60 * Constructs a new instance of this class given its parent | |
61 * (which must be a <code>Tray</code>) and a style value | |
62 * describing its behavior and appearance. The item is added | |
63 * to the end of the items maintained by its parent. | |
64 * <p> | |
65 * The style value is either one of the style constants defined in | |
71 | 66 * class <code>DWT</code> which is applicable to instances of this |
47 | 67 * class, or must be built by <em>bitwise OR</em>'ing together |
68 * (that is, using the <code>int</code> "|" operator) two or more | |
71 | 69 * of those <code>DWT</code> style constants. The class description |
47 | 70 * lists the style constants that are applicable to the class. |
71 * Style bits are also inherited from superclasses. | |
72 * </p> | |
73 * | |
74 * @param parent a composite control which will be the parent of the new instance (cannot be null) | |
75 * @param style the style of control to construct | |
76 * | |
77 * @exception IllegalArgumentException <ul> | |
78 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> | |
79 * </ul> | |
71 | 80 * @exception DWTException <ul> |
47 | 81 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> |
82 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> | |
83 * </ul> | |
84 * | |
71 | 85 * @see DWT |
47 | 86 * @see Widget#checkSubclass |
87 * @see Widget#getStyle | |
88 */ | |
89 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
|
90 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
|
91 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
|
92 createWidget (parent.getItemCount ()); |
47 | 93 } |
94 | |
95 /** | |
96 * Adds the listener to the collection of listeners who will | |
97 * be notified when the platform-specific context menu trigger | |
98 * has occurred, by sending it one of the messages defined in | |
99 * the <code>MenuDetectListener</code> interface. | |
100 * | |
101 * @param listener the listener which should be notified | |
102 * | |
103 * @exception IllegalArgumentException <ul> | |
104 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> | |
105 * </ul> | |
71 | 106 * @exception DWTException <ul> |
47 | 107 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
108 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
109 * </ul> | |
110 * | |
111 * @see MenuDetectListener | |
112 * @see #removeMenuDetectListener | |
113 * | |
114 * @since 3.3 | |
115 */ | |
116 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
|
117 checkWidget (); |
71 | 118 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
|
119 TypedListener typedListener = new TypedListener (listener); |
71 | 120 addListener (DWT.MenuDetect, typedListener); |
47 | 121 } |
122 | |
123 /** | |
124 * Adds the listener to the collection of listeners who will | |
125 * be notified when the receiver is selected by the user, by sending | |
126 * it one of the messages defined in the <code>SelectionListener</code> | |
127 * interface. | |
128 * <p> | |
129 * <code>widgetSelected</code> is called when the receiver is selected | |
130 * <code>widgetDefaultSelected</code> is called when the receiver is double-clicked | |
131 * </p> | |
132 * | |
133 * @param listener the listener which should be notified when the receiver is selected by the user | |
134 * | |
135 * @exception IllegalArgumentException <ul> | |
136 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> | |
137 * </ul> | |
71 | 138 * @exception DWTException <ul> |
47 | 139 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
140 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
141 * </ul> | |
142 * | |
143 * @see SelectionListener | |
144 * @see #removeSelectionListener | |
145 * @see SelectionEvent | |
146 */ | |
147 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
|
148 checkWidget (); |
71 | 149 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
|
150 TypedListener typedListener = new TypedListener (listener); |
71 | 151 addListener (DWT.Selection, typedListener); |
152 addListener (DWT.DefaultSelection, typedListener); | |
47 | 153 } |
154 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
155 protected override void checkSubclass () { |
71 | 156 if (!isValidSubclass ()) error (DWT.ERROR_INVALID_SUBCLASS); |
47 | 157 } |
158 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
159 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
|
160 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
|
161 parent.createItem (this, index); |
47 | 162 } |
163 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
164 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
|
165 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
|
166 handle = OS.gtk_plug_new (0); |
71 | 167 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
|
168 imageHandle = OS.gtk_image_new (); |
71 | 169 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
|
170 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
|
171 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
|
172 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
|
173 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
|
174 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
|
175 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
|
176 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
|
177 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
|
178 } |
238 | 179 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
|
180 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
|
181 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
|
182 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
|
183 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
|
184 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
|
185 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
|
186 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
|
187 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
|
188 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
|
189 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
|
190 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
|
191 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
|
192 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
|
193 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
|
194 OS.g_free (event); |
47 | 195 } |
196 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
197 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
|
198 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
|
199 display.removeWidget (imageHandle); |
47 | 200 } |
201 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
202 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
|
203 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
|
204 releaseHandle (); |
47 | 205 } |
206 | |
207 /** | |
208 * Returns the receiver's parent, which must be a <code>Tray</code>. | |
209 * | |
210 * @return the receiver's parent | |
211 * | |
71 | 212 * @exception DWTException <ul> |
47 | 213 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
214 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
215 * </ul> | |
216 * | |
217 * @since 3.2 | |
218 */ | |
219 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
|
220 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
|
221 return parent; |
47 | 222 } |
223 | |
224 /** | |
225 * Returns the receiver's tool tip, or null if it has | |
226 * not been set. | |
227 * | |
228 * @return the receiver's tool tip text | |
229 * | |
71 | 230 * @exception DWTException <ul> |
47 | 231 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
232 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
233 * </ul> | |
234 * | |
235 * @since 3.2 | |
236 */ | |
237 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
|
238 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
|
239 return toolTip; |
47 | 240 } |
241 | |
242 /** | |
243 * Returns the receiver's tool tip text, or null if it has | |
244 * not been set. | |
245 * | |
246 * @return the receiver's tool tip text | |
247 * | |
71 | 248 * @exception DWTException <ul> |
47 | 249 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
250 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
251 * </ul> | |
252 */ | |
238 | 253 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
|
254 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
|
255 return toolTipText; |
47 | 256 } |
257 | |
258 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
|
259 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
|
260 if (event.button is 3 && event.type is OS.GDK_BUTTON_PRESS) { |
71 | 261 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
|
262 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
|
263 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
264 if (event.type is OS.GDK_2BUTTON_PRESS) { |
71 | 265 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
|
266 } else { |
71 | 267 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
|
268 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
269 return 0; |
47 | 270 } |
271 | |
272 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
|
273 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
|
274 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
|
275 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
|
276 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
|
277 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
|
278 auto gdkImage = OS.gdk_drawable_get_image (image.mask, 0, 0, b.width, b.height); |
71 | 279 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
|
280 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
|
281 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
|
282 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
|
283 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
|
284 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
|
285 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
|
286 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
|
287 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
|
288 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
|
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 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
291 } |
47 | 292 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
|
293 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
|
294 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
|
295 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
|
296 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
|
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 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
299 return 0; |
47 | 300 } |
301 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
302 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
|
303 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
|
304 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
|
305 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
|
306 OS.g_signal_connect_closure_by_id (imageHandle, display.signalIds [SIZE_ALLOCATE], 0, display.closures [SIZE_ALLOCATE], false); |
47 | 307 } |
308 | |
309 /** | |
310 * Returns <code>true</code> if the receiver is visible and | |
311 * <code>false</code> otherwise. | |
312 * | |
313 * @return the receiver's visibility | |
314 * | |
71 | 315 * @exception DWTException <ul> |
47 | 316 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
317 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
318 * </ul> | |
319 */ | |
320 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
|
321 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
|
322 return OS.GTK_WIDGET_VISIBLE (handle); |
47 | 323 } |
324 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
325 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
|
326 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
|
327 display.addWidget (imageHandle, this); |
47 | 328 } |
329 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
330 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
|
331 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
|
332 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
|
333 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
|
334 parent = null; |
47 | 335 } |
336 | |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
337 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
|
338 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
|
339 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
|
340 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
|
341 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
|
342 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
|
343 toolTipText = null; |
47 | 344 } |
345 | |
346 /** | |
347 * Removes the listener from the collection of listeners who will | |
348 * be notified when the platform-specific context menu trigger has | |
349 * occurred. | |
350 * | |
351 * @param listener the listener which should no longer be notified | |
352 * | |
353 * @exception IllegalArgumentException <ul> | |
354 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> | |
355 * </ul> | |
71 | 356 * @exception DWTException <ul> |
47 | 357 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
358 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
359 * </ul> | |
360 * | |
361 * @see MenuDetectListener | |
362 * @see #addMenuDetectListener | |
363 * | |
364 * @since 3.3 | |
365 */ | |
366 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
|
367 checkWidget (); |
71 | 368 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
|
369 if (eventTable is null) return; |
71 | 370 eventTable.unhook (DWT.MenuDetect, listener); |
47 | 371 } |
372 | |
373 /** | |
374 * Removes the listener from the collection of listeners who will | |
375 * be notified when the receiver is selected by the user. | |
376 * | |
377 * @param listener the listener which should no longer be notified | |
378 * | |
379 * @exception IllegalArgumentException <ul> | |
380 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> | |
381 * </ul> | |
71 | 382 * @exception DWTException <ul> |
47 | 383 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
384 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
385 * </ul> | |
386 * | |
387 * @see SelectionListener | |
388 * @see #addSelectionListener | |
389 */ | |
390 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
|
391 checkWidget (); |
71 | 392 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
|
393 if (eventTable is null) return; |
71 | 394 eventTable.unhook (DWT.Selection, listener); |
395 eventTable.unhook (DWT.DefaultSelection, listener); | |
47 | 396 } |
397 | |
398 /** | |
399 * Sets the receiver's image. | |
400 * | |
401 * @param image the new image | |
402 * | |
403 * @exception IllegalArgumentException <ul> | |
404 * <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</li> | |
405 * </ul> | |
71 | 406 * @exception DWTException <ul> |
47 | 407 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
408 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
409 * </ul> | |
410 */ | |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
72
diff
changeset
|
411 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
|
412 checkWidget (); |
71 | 413 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
|
414 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
|
415 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
|
416 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
|
417 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
|
418 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
|
419 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
|
420 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
|
421 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
|
422 } 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
|
423 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
|
424 } |
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 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
|
426 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
|
427 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
|
428 } 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
|
429 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
|
430 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
|
431 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
|
432 } |
47 | 433 } |
434 | |
435 /** | |
436 * Sets the receiver's tool tip to the argument, which | |
437 * may be null indicating that no tool tip should be shown. | |
438 * | |
439 * @param toolTip the new tool tip (or null) | |
440 * | |
71 | 441 * @exception DWTException <ul> |
47 | 442 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
443 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
444 * </ul> | |
445 * | |
446 * @since 3.2 | |
447 */ | |
448 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
|
449 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
|
450 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
|
451 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
|
452 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
|
453 if (newTip !is null) newTip.item = this; |
47 | 454 } |
455 | |
456 /** | |
457 * Sets the receiver's tool tip text to the argument, which | |
458 * may be null indicating that no tool tip text should be shown. | |
459 * | |
460 * @param value the new tool tip text (or null) | |
461 * | |
71 | 462 * @exception DWTException <ul> |
47 | 463 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
464 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
465 * </ul> | |
466 */ | |
238 | 467 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
|
468 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
|
469 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
|
470 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
|
471 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
|
472 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
|
473 } |
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 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
|
475 tooltipsHandle = cast(GtkWidget*)OS.gtk_tooltips_new (); |
71 | 476 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
|
477 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
|
478 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
|
479 } |
8cec8f536af3
All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents:
47
diff
changeset
|
480 OS.gtk_tooltips_set_tip (cast(GtkTooltips*)tooltipsHandle, handle, buffer, null); |
47 | 481 } |
482 | |
483 /** | |
484 * Makes the receiver visible if the argument is <code>true</code>, | |
485 * and makes it invisible otherwise. | |
486 * | |
487 * @param visible the new visibility state | |
488 * | |
71 | 489 * @exception DWTException <ul> |
47 | 490 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
491 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> | |
492 * </ul> | |
493 */ | |
494 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
|
495 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
|
496 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
|
497 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
|
498 /* |
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 * 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
|
500 * 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
|
501 * 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
|
502 */ |
71 | 503 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
|
504 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
|
505 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
|
506 } 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
|
507 OS.gtk_widget_hide (handle); |
71 | 508 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
|
509 } |
47 | 510 } |
511 } |