Changeset 144:35669d0d0dc5
- Timestamp:
- 02/13/08 10:35:16
(1 year ago)
- Author:
- Frank Benoit <benoit@tionex.de>
- branch:
- default
- Message:
TreeDropTargetEffect?
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r137 |
r144 |
|
| 20 | 20 | import dwt.dnd.DropTargetEffect; |
|---|
| 21 | 21 | import dwt.dnd.DropTargetEvent; |
|---|
| | 22 | import dwt.dnd.DND; |
|---|
| | 23 | |
|---|
| | 24 | import dwt.dwthelper.utils; |
|---|
| 22 | 25 | |
|---|
| 23 | 26 | /** |
|---|
| … | … | |
| 121 | 124 | public void dragLeave(DropTargetEvent event) { |
|---|
| 122 | 125 | Tree tree = cast(Tree) control; |
|---|
| 123 | | int handle = tree.handle; |
|---|
| | 126 | auto handle = tree.handle; |
|---|
| 124 | 127 | if (dropIndex !is -1) { |
|---|
| 125 | | TVITEM tvItem = new TVITEM (); |
|---|
| 126 | | tvItem.hItem = dropIndex; |
|---|
| | 128 | TVITEM tvItem; |
|---|
| | 129 | tvItem.hItem = cast(HANDLE) dropIndex; |
|---|
| 127 | 130 | tvItem.mask = OS.TVIF_STATE; |
|---|
| 128 | 131 | tvItem.stateMask = OS.TVIS_DROPHILITED; |
|---|
| 129 | 132 | tvItem.state = 0; |
|---|
| 130 | | OS.SendMessage (handle, OS.TVM_SETITEM, 0, tvItem); |
|---|
| | 133 | OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem); |
|---|
| 131 | 134 | dropIndex = -1; |
|---|
| 132 | 135 | } |
|---|
| … | … | |
| 162 | 165 | Tree tree = cast(Tree) getControl(); |
|---|
| 163 | 166 | int effect = checkEffect(event.feedback); |
|---|
| 164 | | int handle = tree.handle; |
|---|
| | 167 | auto handle = tree.handle; |
|---|
| 165 | 168 | Point coordinates = new Point(event.x, event.y); |
|---|
| 166 | 169 | coordinates = tree.toControl(coordinates); |
|---|
| 167 | | TVHITTESTINFO lpht = new TVHITTESTINFO (); |
|---|
| 168 | | lpht.x = coordinates.x; |
|---|
| 169 | | lpht.y = coordinates.y; |
|---|
| 170 | | OS.SendMessage (handle, OS.TVM_HITTEST, 0, lpht); |
|---|
| 171 | | int hItem = lpht.hItem; |
|---|
| | 170 | TVHITTESTINFO lpht; |
|---|
| | 171 | lpht.pt.x = coordinates.x; |
|---|
| | 172 | lpht.pt.y = coordinates.y; |
|---|
| | 173 | OS.SendMessage (handle, OS.TVM_HITTEST, 0, &lpht); |
|---|
| | 174 | int hItem = cast(int) lpht.hItem; |
|---|
| 172 | 175 | if ((effect & DND.FEEDBACK_SCROLL) is 0) { |
|---|
| 173 | 176 | scrollBeginTime = 0; |
|---|
| … | … | |
| 182 | 185 | scroll = nextItem !is 0; |
|---|
| 183 | 186 | } else { |
|---|
| 184 | | RECT itemRect = new RECT (); |
|---|
| | 187 | RECT itemRect; |
|---|
| 185 | 188 | itemRect.left = nextItem; |
|---|
| 186 | | if (OS.SendMessage (handle, OS.TVM_GETITEMRECT, 1, itemRect) !is 0) { |
|---|
| 187 | | RECT rect = new RECT (); |
|---|
| 188 | | OS.GetClientRect (handle, rect); |
|---|
| 189 | | POINT pt = new POINT (); |
|---|
| | 189 | if (OS.SendMessage (handle, OS.TVM_GETITEMRECT, 1, &itemRect) !is 0) { |
|---|
| | 190 | RECT rect; |
|---|
| | 191 | OS.GetClientRect (handle, &rect); |
|---|
| | 192 | POINT pt; |
|---|
| 190 | 193 | pt.x = itemRect.left; |
|---|
| 191 | 194 | pt.y = itemRect.top; |
|---|
| 192 | | if (OS.PtInRect (rect, pt)) { |
|---|
| | 195 | if (OS.PtInRect (&rect, pt)) { |
|---|
| 193 | 196 | pt.y = itemRect.bottom; |
|---|
| 194 | | if (OS.PtInRect (rect, pt)) scroll = false; |
|---|
| | 197 | if (OS.PtInRect (&rect, pt)) scroll = false; |
|---|
| 195 | 198 | } |
|---|
| 196 | 199 | } |
|---|
| … | … | |
| 215 | 218 | if (System.currentTimeMillis() >= expandBeginTime) { |
|---|
| 216 | 219 | if (OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_CHILD, hItem) !is 0) { |
|---|
| 217 | | TVITEM tvItem = new TVITEM (); |
|---|
| 218 | | tvItem.hItem = hItem; |
|---|
| | 220 | TVITEM tvItem; |
|---|
| | 221 | tvItem.hItem = cast(HANDLE) hItem; |
|---|
| 219 | 222 | tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_STATE; |
|---|
| 220 | | OS.SendMessage (handle, OS.TVM_GETITEM, 0, tvItem); |
|---|
| | 223 | OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem); |
|---|
| 221 | 224 | if ((tvItem.state & OS.TVIS_EXPANDED) is 0) { |
|---|
| 222 | 225 | OS.SendMessage (handle, OS.TVM_EXPAND, OS.TVE_EXPAND, hItem); |
|---|
| … | … | |
| 233 | 236 | } |
|---|
| 234 | 237 | if (dropIndex !is -1 && (dropIndex !is hItem || (effect & DND.FEEDBACK_SELECT) is 0)) { |
|---|
| 235 | | TVITEM tvItem = new TVITEM (); |
|---|
| 236 | | tvItem.hItem = dropIndex; |
|---|
| | 238 | TVITEM tvItem; |
|---|
| | 239 | tvItem.hItem = cast(HANDLE) dropIndex; |
|---|
| 237 | 240 | tvItem.mask = OS.TVIF_STATE; |
|---|
| 238 | 241 | tvItem.stateMask = OS.TVIS_DROPHILITED; |
|---|
| 239 | 242 | tvItem.state = 0; |
|---|
| 240 | | OS.SendMessage (handle, OS.TVM_SETITEM, 0, tvItem); |
|---|
| | 243 | OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem); |
|---|
| 241 | 244 | dropIndex = -1; |
|---|
| 242 | 245 | } |
|---|
| 243 | 246 | if (hItem !is -1 && hItem !is dropIndex && (effect & DND.FEEDBACK_SELECT) !is 0) { |
|---|
| 244 | | TVITEM tvItem = new TVITEM (); |
|---|
| 245 | | tvItem.hItem = hItem; |
|---|
| | 247 | TVITEM tvItem; |
|---|
| | 248 | tvItem.hItem = cast(HANDLE) hItem; |
|---|
| 246 | 249 | tvItem.mask = OS.TVIF_STATE; |
|---|
| 247 | 250 | tvItem.stateMask = OS.TVIS_DROPHILITED; |
|---|
| 248 | 251 | tvItem.state = OS.TVIS_DROPHILITED; |
|---|
| 249 | | OS.SendMessage (handle, OS.TVM_SETITEM, 0, tvItem); |
|---|
| | 252 | OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem); |
|---|
| 250 | 253 | dropIndex = hItem; |
|---|
| 251 | 254 | } |
|---|