OWLNext    7.0
Borland's Object Windows Library for the modern age
Loading...
Searching...
No Matches
docking.h
Go to the documentation of this file.
1//----------------------------------------------------------------------------
2// ObjectWindows
3// Copyright (c) 1995, 1996 by Borland International, All Rights Reserved
4//
5/// \file
6/// TDockable classes: TDockableGadgetWindow & TDockableControlBar
7/// TDockingSlip classes: TFloatingSlip & TEdgeSlip
8/// and the THarbor docking manager
9//----------------------------------------------------------------------------
10#if !defined(OWL_DOCKING_H)
11#define OWL_DOCKING_H
12
13#include <owl/private/defs.h>
14#if defined(BI_HAS_PRAGMA_ONCE)
15# pragma once
16#endif
17
18#include <owl/decframe.h>
19#include <owl/floatfra.h>
20#include <owl/gadgetwi.h>
21#include <owl/controlb.h>
22
23
24namespace owl {
25
26class _OWLCLASS THarbor;
28
29
30#include <owl/preclass.h>
31
32/// \addtogroup Docking
33/// @{
34
35/// General use 2-D rectangular relative position enum
36//
37/// Used here to described the location of a docking window [more specifically
38/// the location of the EdgeSlip containing docking windows].
39//
40/// \note This enumeration corresponds to the TLocation enumeration of
41/// TDecoratedFrame.
42//
44 rpNone, ///< No location specified
45 rpAbove, ///< Refers to top edge of frame
46 rpBelow, ///< Refers to bottom edge of frame
47 rpRightOf, ///< Refers to left edge of frame
48 rpLeftOf ///< Refers to right edge of frame
49};
50
51//
52/// \class TDockable
53// ~~~~~ ~~~~~~~~~
54/// TDockable is an abstract base class for fixed or floating docking windows that
55/// want to be dockable into docking slips.
56//
58 public:
59
60/// Returns the rectangle of the dockable window in the given location. The dockable
61/// chooses its layout (horizontal, vertical or rectangle) in that position.
62 virtual TSize ComputeSize(TAbsLocation loc, TSize* dim) = 0;
63
64/// Return the rectangle of the dockable window in the given location. The dockable
65/// chooses its layout (horizontal, vertical or rectangle) in that position.
66 virtual void GetRect(TRect& rect) = 0;
67
68/// Changes the window to be equal to the size returned from ComputeNNNNN.
69 virtual void Layout(TAbsLocation loc, TSize* dim=0) = 0;
70
71/// This is overriden for any window that wants to be docked. This routine is called
72/// from an LButtonDown to determine if the mouse down should move the window or
73/// perform an action within the docked window. For example, if a gadget window is
74/// docked, this routine would decide if the mousedown is on an enabled gadget; if
75/// so, the control is not to be moved. Instead, the action of the gadget being
76/// depressed is performed. Otherwise, the gadget window is moved within the docking
77/// window.
78 virtual bool ShouldBeginDrag(TPoint& pt) = 0;
79
80/// Gets dockable's window and hides it, in case we have to toss it around a bit.
81 virtual TWindow* GetWindow() = 0;
82
83/// Returns the harbor containing the dockable object.
84 virtual THarbor* GetHarbor() = 0;
85};
86
87//
88/// \class TDockableGadgetWindow
89// ~~~~~ ~~~~~~~~~~~~~~~~~~~~~
90/// A version of TGadgetWindow which is dockable
91//
93 public:
95 TTileDirection direction = Horizontal,
96 TFont* font = 0,
97 TModule* module = 0);
98 ~TDockableGadgetWindow() override;
99
100 // Override TDockable virtuals
101 //
102 auto ComputeSize(TAbsLocation, TSize*) -> TSize override;
103 void GetRect(TRect&) override;
104 void Layout(TAbsLocation, TSize* = nullptr) override;
105 auto ShouldBeginDrag(TPoint&) -> bool override;
106 auto GetWindow() -> TWindow* override;
107 auto GetHarbor() -> THarbor* override;
108 virtual TGadget* GetGripGadget();
109
110 // Override TGadgetWindow virtuals
111 //
112 void LayoutSession() override;
113
114 protected:
115 void EvLButtonDown(uint modKeys, const TPoint& point);
116 void EvOwlWindowDocked(uint pos, const TDockingSlip& slip);
117 bool EvSetCursor(HWND hWndCursor, uint codeHitTest, TMsgId mouseMsg);
118
119 /// Returns the layout direction to use when placed in a slip
120 /// This can be overridden to provide different docking behaviour
121 //
123
126};
127
128//
129/// \class TDockableControlBar
130// ~~~~~ ~~~~~~~~~~~~~~~~~~~
131/// A control bar class that is dockable
132//
134 public:
135 TDockableControlBar(TWindow* parent = 0,
136 TTileDirection direction = Horizontal,
137 TFont* font = 0,
138 TModule* module = 0);
139
140 protected:
141 void AdjustMargins();
142 void EvOwlWindowDocked(uint pos, const TDockingSlip& slip);
143
146};
147
148//
149/// \class TDockingSlip
150// ~~~~~ ~~~~~~~~~~~~
151/// TDockingSlip is an abstract base class for windows which accepts and holds
152/// dockable windows.
153//
155 public:
156 // These are overriden for any window that wants to be notified on dockable
157 // windows being moved or removed.
158 //
159/// Inserts the dockable into the slip, based on arguments given.
160 virtual void DockableInsert(TDockable& dockable, const TPoint* topLeft=0,
161 TRelPosition position=rpNone, TDockable* relDockable=0) = 0;
162
163 virtual void DockableMove(TDockable& dockable, const TPoint* topLeft=0,
164 TRelPosition position=rpNone, TDockable* relDockable=0) = 0;
165
166 virtual void DockableRemoved(const TRect& orgRect) = 0;
167
168 virtual TAbsLocation GetLocation() const = 0;
169
170 // Called by Harbor to initialize back pointer
171 //
172 void SetHarbor(THarbor* harbor);
173 THarbor* GetHarbor() const;
174
175 protected:
177};
178
179//
180/// \class TFloatingSlip
181// ~~~~~ ~~~~~~~~~~~~~
182/// TFloatingSlip is a floating frame which can hold a dockable window. It is also
183/// dockable in order to act as a proxy for its held dockable when dragging.
184//
186 public TDockingSlip, public TDockable
187{
188 public:
189 TFloatingSlip(TWindow* parent,
190 int x, int y,
191 TWindow* clientWnd = 0,
192 bool shrinkToClient = true,
193 int captionHeight = DefaultCaptionHeight,
194 bool popupPalette = true, // false?
195 TModule* module = 0);
196
197 // Override TDockingSlip virtuals
198 //
199 void DockableInsert(TDockable&, const TPoint* topLeft, TRelPosition, TDockable* relDockable) override;
200 void DockableMove(TDockable&, const TPoint* topLeft, TRelPosition, TDockable* relDockable) override;
201 void DockableRemoved(const TRect&) override;
202
203 auto GetLocation() const -> TAbsLocation override;
204
205 // Override TDockable virtuals
206 //
207 auto ComputeSize(TAbsLocation, TSize*) -> TSize override;
208 void GetRect(TRect&) override;
209 void Layout(TAbsLocation, TSize* = nullptr) override;
210 auto ShouldBeginDrag(TPoint&) -> bool override;
211 auto GetWindow() -> TWindow* override;
212 auto GetHarbor() -> THarbor* override;
213
214 protected:
215 void EvNCLButtonDown(uint hitTest, const TPoint& point);
216 void EvLButtonDown(uint hitTest, const TPoint& point);
217 bool EvSizing(uint side, TRect& rect);
218 bool EvWindowPosChanging(WINDOWPOS & windowPos);
219 void EvWindowPosChanged(const WINDOWPOS& windowPos);
220 void EvClose();
221 void EvSettingChange(uint, LPCTSTR);
222 void EvGetMinMaxInfo(MINMAXINFO & info);
223
225};
226
227enum TGridType { ///< Grid type corresponds with Location:
228 YCoord, ///< Top & bottom edge have Y coords parallel horiz
229 XCoord, ///< Left & right edge have X coords parallel vertically
230};
231
232//
233/// \class TEdgeSlip
234// ~~~~~ ~~~~~~~~~
235/// TEdgeSlip is the class of windows used by THarbor as the actual docking slips
236/// along the decorated frame client's edges.
237//
238class _OWLCLASS TEdgeSlip : public TWindow, public TDockingSlip {
239 public:
240 TEdgeSlip(TDecoratedFrame& parent, TAbsLocation location, TModule* module = 0);
241
242 // Overridden TWindow virtuals
243 //
244 auto EvCommand(uint id, THandle hWndCtl, uint notifyCode) -> TResult override;
245 void EvCommandEnable(TCommandEnabler& commandEnabler) override;
246 void SetupWindow() override;
247
248 // Overridden TDockingSlip virtuals
249 //
250 void DockableInsert(TDockable& dockable, const TPoint* topLeft,
251 TRelPosition position, TDockable* relDockable) override;
252 void DockableMove(TDockable& dockable, const TPoint* topLeft,
253 TRelPosition position, TDockable* relDockable) override;
254 void DockableRemoved(const TRect& orgRect) override;
255 auto GetLocation() const -> TAbsLocation override;
256
257 /// Called by Harbor when creating this docking window on a drop
258 // !CQ fairly kludgy. Should be handled by above docking slip handlers
259 //
260 void ReLayout(bool forcedLayout);
261
262 protected:
263 void EvLButtonDown(uint modKeys, const TPoint& point);
264 void EvLButtonDblClk(uint modKeys, const TPoint& point);
265 uint EvNCCalcSize(bool calcValidRects, NCCALCSIZE_PARAMS & calcSize);
266
267 void EvNCPaint(HRGN);
268
269 bool EvEraseBkgnd(HDC);
270 void EvParentNotify(const TParentNotify&);
271 bool EvWindowPosChanging(WINDOWPOS & windowPos);
272
273 // Internal dockable tiling support
274 //
275 void CompressGridLines();
276 void CompressParallel(int width);
278
279 TWindow* MoveDraggedWindow(TWindow* draggedWindow);
280 void MoveAllOthers(TWindow* draggedWindow, TWindow* movedWindow);
281
282 int GridSize(int baseCoord);
283
285 TAbsLocation Location; ///< Location on the frame
286 TGridType GridType; ///< Type of grid
287
288 DECLARE_RESPONSE_TABLE(TEdgeSlip);
289};
290
291//
292/// \class THarbor
293// ~~~~~ ~~~~~~~
294/// THarbor is the object that holds all the docking slips. It performs the actual
295/// docking insertion and coordination. It is never visible; it is a window in order
296/// to capture the mouse.
297//
298class _OWLCLASS THarbor : public TWindow {
299 public:
301 ~THarbor() override;
302
303 /// Dockable window insertion
304 //
305 TDockingSlip* Insert(TDockable& dockable,
306 TAbsLocation location,
307 const TPoint* where = 0,
308 TRelPosition position = rpNone,
309 TDockable* relativeTo = 0);
310
311 /// Move a dockable from one slip to another, programatically
312 //
313 void Move(TDockable& dockable,
314 TAbsLocation location,
315 const TPoint* where = 0,
316 TRelPosition position = rpNone,
317 TDockable* relativeTo = 0);
318
319 /// Remove a dockable from the harbor
320 //
321 void Remove(TDockable& dockable);
322
323 /// Called by docking slips
324 //
325 bool DockDraggingBegin(TDockable& dockable, const TPoint& pt,
326 TAbsLocation location,
327 TDockingSlip* dockingNotify = 0);
328
329 protected:
331 void SetEdgeSlip(TAbsLocation location, TEdgeSlip* slip);
333
334 // Factory members - could be overridden by derived THarbor class
335 //
337 TAbsLocation location);
339 int x, int y,
340 TWindow* dockableWindow);
341
342 // Mouse handlers - invoked when harbor grabs capture
343 //
344 void EvMouseMove(uint modKeys, const TPoint& point);
345 void EvLButtonUp(uint modKeys, const TPoint& point);
346 void EvLButtonDblClk(uint modKeys, const TPoint& point);
347
348// private:
349 protected: //Sirma (Krasi)
351
352 // Docking slip windows
353 //
358
359 // Dockable dragging state. Put into a struct packet
360 //
363 TAbsLocation DragOrgSlipLoc; ///< Original slip location on mouseDown.
366 TSize DragVSize; ///< Size of dockable when vertical
367 TSize DragHSize; ///< Size of dockable when horizontal
368 TSize DragNSize; ///< Size of dockable when a natural shape
370 TDockingSlip* DragNotificatee; ///< Slip notified on drag operations
371
376
378};
379/// @}
380#include <owl/posclass.h>
381
382
383//----------------------------------------------------------------------------
384// Inline implementations
385//
386
387//
388/// Set the back pointer to the harbor.
389//
391{
392 Harbor = harbor;
393}
394
395//
396/// Retrieve the associated harbor.
397//
399{
400 return Harbor;
401}
402
403} // OWL namespace
404
405
406#endif // OWL_DOCKING_H
Base class for an extensible interface for auto enabling/disabling of commands (menu items,...
Definition window.h:209
TCursor, derived from TGdiBase, represents the GDI cursor object class.
Definition gdiobjec.h:730
TDecoratedFrame automatically positions its client window (you must supply a client window) so that i...
Definition decframe.h:74
DECLARE_RESPONSE_TABLE(TDockableControlBar)
TDockableControlBar(TWindow *parent=0, TTileDirection direction=Horizontal, TFont *font=0, TModule *module=0)
Constructs a dockable control bar.
Definition docking.cpp:496
void EvOwlWindowDocked(uint pos, const TDockingSlip &slip)
Definition docking.cpp:534
void Layout(TAbsLocation, TSize *=nullptr) override
Causes this dockable to lay itself out vertically, horizontally, or rectangularly.
Definition docking.cpp:330
virtual TTileDirection GetDirectionForLocation(TAbsLocation loc)
Returns the layout direction to use when placed in a slip This can be overridden to provide different...
Definition docking.cpp:310
auto GetWindow() -> TWindow *override
Returns the TWindow part of this dockable object.
Definition docking.cpp:368
void EvOwlWindowDocked(uint pos, const TDockingSlip &slip)
Inserts/deletes FlatBar Grip.
Definition docking.cpp:106
void EvLButtonDown(uint modKeys, const TPoint &point)
Forwards event to slip to allow movement of gadget within the slip.
Definition docking.cpp:439
auto ShouldBeginDrag(TPoint &) -> bool override
Returns true if the mouse click point is in a spot that should move this dockable around.
Definition docking.cpp:349
virtual TGadget * GetGripGadget()
Definition docking.cpp:89
void GetRect(TRect &) override
Gets this dockable's screen rectangle.
Definition docking.cpp:300
auto ComputeSize(TAbsLocation, TSize *) -> TSize override
Finds out how big this dockable would be in a given location, and with a given optional size hint.
Definition docking.cpp:183
void LayoutSession() override
If the gadget window changes size when laying out a dockable gadget window, this function tells the d...
Definition docking.cpp:378
DECLARE_RESPONSE_TABLE(TDockableGadgetWindow)
auto GetHarbor() -> THarbor *override
Returns the harbor containing the dockable object.
Definition docking.cpp:421
TDockableGadgetWindow(TWindow *parent=0, TTileDirection direction=Horizontal, TFont *font=0, TModule *module=0)
This constructor creates a dockable gadget window and sets the appropriate styles for the window.
Definition docking.cpp:58
bool EvSetCursor(HWND hWndCursor, uint codeHitTest, TMsgId mouseMsg)
Definition docking.cpp:154
TDockable is an abstract base class for fixed or floating docking windows that want to be dockable in...
Definition docking.h:57
virtual TWindow * GetWindow()=0
Gets dockable's window and hides it, in case we have to toss it around a bit.
virtual TSize ComputeSize(TAbsLocation loc, TSize *dim)=0
Returns the rectangle of the dockable window in the given location.
virtual void GetRect(TRect &rect)=0
Return the rectangle of the dockable window in the given location.
virtual void Layout(TAbsLocation loc, TSize *dim=0)=0
Changes the window to be equal to the size returned from ComputeNNNNN.
virtual bool ShouldBeginDrag(TPoint &pt)=0
This is overriden for any window that wants to be docked.
virtual THarbor * GetHarbor()=0
Returns the harbor containing the dockable object.
TDockingSlip is an abstract base class for windows which accepts and holds dockable windows.
Definition docking.h:154
virtual void DockableMove(TDockable &dockable, const TPoint *topLeft=0, TRelPosition position=rpNone, TDockable *relDockable=0)=0
void SetHarbor(THarbor *harbor)
Set the back pointer to the harbor.
Definition docking.h:390
THarbor * GetHarbor() const
Retrieve the associated harbor.
Definition docking.h:398
virtual TAbsLocation GetLocation() const =0
THarbor * Harbor
Definition docking.h:176
virtual void DockableRemoved(const TRect &orgRect)=0
virtual void DockableInsert(TDockable &dockable, const TPoint *topLeft=0, TRelPosition position=rpNone, TDockable *relDockable=0)=0
Inserts the dockable into the slip, based on arguments given.
TEdgeSlip is the class of windows used by THarbor as the actual docking slips along the decorated fra...
Definition docking.h:238
TWindow * MoveDraggedWindow(TWindow *draggedWindow)
All terminology in this function is referenced to the following two windows Drag and LeftEdge.
Definition docking.cpp:1713
void DockableInsert(TDockable &dockable, const TPoint *topLeft, TRelPosition position, TDockable *relDockable) override
This function overrides TDockingSlip::DockableInsert to insert a new dockable object into this TEdgeS...
Definition docking.cpp:1515
void EvParentNotify(const TParentNotify &)
Makes sure that the slip size is updated when a child changes size.
Definition docking.cpp:1278
uint EvNCCalcSize(bool calcValidRects, NCCALCSIZE_PARAMS &calcSize)
Returns the size of the client area, leaving room for the etched separators.
Definition docking.cpp:1210
TEdgeSlip(TDecoratedFrame &parent, TAbsLocation location, TModule *module=0)
Constructs an edge slip, and sets the approriate styles for the window.
Definition docking.cpp:974
void EvLButtonDown(uint modKeys, const TPoint &point)
Forwards the left button down message to the dockable object.
Definition docking.cpp:1176
bool EvWindowPosChanging(WINDOWPOS &windowPos)
When the slip shrinks, this function adjusts dockables where needed.
Definition docking.cpp:1332
void DockableRemoved(const TRect &orgRect) override
Overriden TDockingSlip virtual.
Definition docking.cpp:1684
void SetupWindow() override
Ensures that all decorations in the docking window are abutted against each other (both horizontally ...
Definition docking.cpp:1061
void CompressGridLines()
Compresses or expands dockables perpendicular to the grid line.
Definition docking.cpp:1344
void DockableMove(TDockable &dockable, const TPoint *topLeft, TRelPosition position, TDockable *relDockable) override
Overriden TDockingSlip virtual.
Definition docking.cpp:1556
auto EvCommand(uint id, THandle hWndCtl, uint notifyCode) -> TResult override
Forward command messages to the parent.
Definition docking.cpp:1161
int GridSize(int baseCoord)
Returns the perpendicular size of the grid line with the given base coordinates.
Definition docking.cpp:2016
void EvLButtonDblClk(uint modKeys, const TPoint &point)
Handles WM_LBUTONDBLCLICK to tell the frame to edit a toolbar.
Definition docking.cpp:1201
void EvCommandEnable(TCommandEnabler &commandEnabler) override
Changes the reciever to be the framewindow, not the docking window.
Definition docking.cpp:1140
void CompressParallel(int width)
Compresses empty space along grid line if any dockables hang out past the end.
Definition docking.cpp:1397
auto GetLocation() const -> TAbsLocation override
Retrieves the location of the slip.
Definition docking.cpp:2048
void EvNCPaint(HRGN)
Erases the background and draws in etched 'borders' within the client area.
Definition docking.cpp:1232
TSize ComputeDockingArea()
Computes the docking area size based on the dockables inside (total height if top/bottom docking area...
Definition docking.cpp:1978
void MoveAllOthers(TWindow *draggedWindow, TWindow *movedWindow)
Builds a list (sorted by left coordinate) of windows on the same horizontal (top/bottom docking) or v...
Definition docking.cpp:1849
void ReLayout(bool forcedLayout)
Called by Harbor when creating this docking window on a drop.
Definition docking.cpp:1477
bool EvEraseBkgnd(HDC)
Erases the background and draws in etched 'borders' within the client area.
Definition docking.cpp:1265
TFloatingFrame(TWindow *parent, LPCTSTR title=0, TWindow *clientWnd=0, bool shrinkToClient=false, int captionHeight=DefaultCaptionHeight, bool popupPalette=false, TModule *module=0)
Constructs a TFloatingFrame object attached to the specified parent window.
Definition floatfra.cpp:46
TFloatingSlip is a floating frame which can hold a dockable window.
Definition docking.h:187
bool EvWindowPosChanging(WINDOWPOS &windowPos)
Handles WM_WINDOWPOSCHANGING to make sure that the frame is properly constrained by the dimensions of...
Definition docking.cpp:724
auto ComputeSize(TAbsLocation, TSize *) -> TSize override
Forward the first four TDockable virtuals to the client dockable.
Definition docking.cpp:887
void EvSettingChange(uint, LPCTSTR)
Event handler for the .INI file changed message.
Definition docking.cpp:788
DECLARE_RESPONSE_TABLE(TFloatingSlip)
void EvNCLButtonDown(uint hitTest, const TPoint &point)
Handles lbutton down bubbled up from the client to begin a dockable drag operation.
Definition docking.cpp:601
auto GetHarbor() -> THarbor *override
Returns the associated harbor.
Definition docking.cpp:946
auto ShouldBeginDrag(TPoint &) -> bool override
A given mouse down should never begin a drag for this dockable.
Definition docking.cpp:926
void DockableInsert(TDockable &, const TPoint *topLeft, TRelPosition, TDockable *relDockable) override
Overriden TDockingSlip virtual.
Definition docking.cpp:827
void EvWindowPosChanged(const WINDOWPOS &windowPos)
Handles WM_WINDOWPOSCHANGED to make sure that the dockable client gets a chance to do final layout.
Definition docking.cpp:764
void GetRect(TRect &) override
Gets this dockable's screen rect.
Definition docking.cpp:902
void EvGetMinMaxInfo(MINMAXINFO &info)
Definition docking.cpp:814
void Layout(TAbsLocation, TSize *=nullptr) override
Forwards the layout message over to the dockable object.
Definition docking.cpp:911
TFloatingSlip(TWindow *parent, int x, int y, TWindow *clientWnd=0, bool shrinkToClient=true, int captionHeight=DefaultCaptionHeight, bool popupPalette=true, TModule *module=0)
Constructs a floating slip and sets the appropriate style for the window.
Definition docking.cpp:555
void DockableMove(TDockable &, const TPoint *topLeft, TRelPosition, TDockable *relDockable) override
Overriden TDockingSlip virtual.
Definition docking.cpp:857
void EvClose()
When closing the floating slip, removes any dockable first so that it is not destroyed.
Definition docking.cpp:641
bool EvSizing(uint side, TRect &rect)
Handles the Windows 4.0 message for the best resize user feedback.
Definition docking.cpp:654
void DockableRemoved(const TRect &) override
Overriden TDockingSlip virtual.
Definition docking.cpp:869
void EvLButtonDown(uint hitTest, const TPoint &point)
Handles lbutton down bubbled up from the client to begin a dockable drag operation.
Definition docking.cpp:618
auto GetWindow() -> TWindow *override
Returns the TWindow part of this dockable object.
Definition docking.cpp:936
auto GetLocation() const -> TAbsLocation override
Returns the location of the object.
Definition docking.cpp:955
TFont derived from TGdiObject provides constructors for creating font objects from explicit informati...
Definition gdiobjec.h:296
friend class TGadget
Definition gadgetwi.h:361
TGadgetWindow(TWindow *parent=nullptr, TTileDirection direction=Horizontal, TFont *font=nullptr, TModule *module=nullptr)
Creates a TGadgetWindow interface object with the default tile direction and font and passes module w...
Definition gadgetwi.cpp:98
TTileDirection
Enumeration describing how gadgets should be laid out within the gadget window.
Definition gadgetwi.h:130
@ Horizontal
Arrange gadgets in a row.
Definition gadgetwi.h:131
THarbor is the object that holds all the docking slips.
Definition docking.h:298
TDockable * DragDockable
Definition docking.h:361
void Remove(TDockable &dockable)
Remove a dockable from the harbor.
Definition docking.cpp:2586
TEdgeSlip * SlipLeft
Definition docking.h:355
TRect SlipRR
Definition docking.h:375
TRelPosition GetSlipPosition(TAbsLocation location)
Returns the default docking relative position for a given slip location.
Definition docking.cpp:2165
void EvLButtonDblClk(uint modKeys, const TPoint &point)
Handles the left button double click and forwards the message to the dockable window.
Definition docking.cpp:2445
TWindowDC * DragDC
Definition docking.h:362
THarbor(TDecoratedFrame &df)
Creates the harbor. The harbor is where the slips can go dock.
Definition docking.cpp:2063
TDockingSlip * Insert(TDockable &dockable, TAbsLocation location, const TPoint *where=0, TRelPosition position=rpNone, TDockable *relativeTo=0)
Dockable window insertion.
Definition docking.cpp:2467
TEdgeSlip * SlipRight
Definition docking.h:357
TSize DragNSize
Size of dockable when a natural shape.
Definition docking.h:368
TDecoratedFrame & DecFrame
Definition docking.h:350
TRect DragFrame
Definition docking.h:365
DECLARE_RESPONSE_TABLE(THarbor)
void Move(TDockable &dockable, TAbsLocation location, const TPoint *where=0, TRelPosition position=rpNone, TDockable *relativeTo=0)
Move a dockable from one slip to another, programatically.
Definition docking.cpp:2548
TRect SlipBR
Definition docking.h:373
TAbsLocation DragSlipLoc
Definition docking.h:364
TEdgeSlip * SlipBottom
Definition docking.h:356
void EvLButtonUp(uint modKeys, const TPoint &point)
Handles mouse up to drop a dockable window being dragged.
Definition docking.cpp:2398
TSize DragVSize
Size of dockable when vertical.
Definition docking.h:366
void EvMouseMove(uint modKeys, const TPoint &point)
Handles MouseMove to perform dockable dragging if a drag is in progress.
Definition docking.cpp:2335
TPoint DragAnchor
Definition docking.h:369
TSize DragHSize
Size of dockable when horizontal.
Definition docking.h:367
TRect SlipTR
Definition docking.h:372
TRect SlipLR
Definition docking.h:374
virtual TEdgeSlip * ConstructEdgeSlip(TDecoratedFrame &df, TAbsLocation location)
Creates an edge slip at a location.
Definition docking.cpp:2094
virtual TFloatingSlip * ConstructFloatingSlip(TDecoratedFrame &df, int x, int y, TWindow *dockableWindow)
Constructs a floating slip with a particular window at a location.
Definition docking.cpp:2103
TDockingSlip * DragNotificatee
Slip notified on drag operations.
Definition docking.h:370
TEdgeSlip * SlipTop
Definition docking.h:354
void SetEdgeSlip(TAbsLocation location, TEdgeSlip *slip)
Sets a new edge slip for a given location.
Definition docking.cpp:2136
TAbsLocation DragOrgSlipLoc
Original slip location on mouseDown.
Definition docking.h:363
bool DockDraggingBegin(TDockable &dockable, const TPoint &pt, TAbsLocation location, TDockingSlip *dockingNotify=0)
Called by docking slips.
Definition docking.cpp:2268
TEdgeSlip * GetEdgeSlip(TAbsLocation location)
Returns the slip at the location.
Definition docking.cpp:2112
ObjectWindows dynamic-link libraries (DLLs) construct an instance of TModule, which acts as an object...
Definition module.h:78
TPoint is a support class, derived from tagPOINT.
Definition geometry.h:87
TRect is a mathematical class derived from tagRect.
Definition geometry.h:308
The tagSIZE struct is defined as.
Definition geometry.h:234
Derived from TDC, TWindowDC is a device context (DC) class that provides access to the entire area ow...
Definition dc.h:588
TWindow, derived from TEventHandler and TStreamableBase, provides window-specific behavior and encaps...
Definition window.h:414
TWindow(TWindow *parent, LPCTSTR title=nullptr, TModule *module=nullptr)
Adds this to the child list of parent if nonzero, and calls EnableAutoCreate so that this will be cre...
Definition window.cpp:341
HWND THandle
TWindow encapsulates an HWND.
Definition window.h:418
Definition of class TControlBar.
Definition of class TDecoratedFrame, a TFrameWindow that can manage decorations around the client win...
Definition of class TFloatingFrame.
Definition of TGadgetList, TGadgetWindow & TGadgetWindowFont A list holding gadgets,...
TRelPosition
General use 2-D rectangular relative position enum.
Definition docking.h:43
TGridType
Definition docking.h:227
@ rpNone
No location specified.
Definition docking.h:44
@ rpAbove
Refers to top edge of frame.
Definition docking.h:45
@ rpBelow
Refers to bottom edge of frame.
Definition docking.h:46
@ rpRightOf
Refers to left edge of frame.
Definition docking.h:47
@ rpLeftOf
Refers to right edge of frame.
Definition docking.h:48
@ XCoord
Left & right edge have X coords parallel vertically.
Definition docking.h:229
@ YCoord
Grid type corresponds with Location:
Definition docking.h:228
TAbsLocation
General use absolute 2-D rectangular location enum.
Definition geometry.h:62
Object Windows Library (OWLNext Core).
Definition animctrl.h:22
UINT TMsgId
Message ID type.
Definition dispatch.h:53
TDispatch< WM_PARENTNOTIFY >::TArgs TParentNotify
Alias for convenience.
Definition dispatch.h:2894
LRESULT TResult
Result type.
Definition dispatch.h:52
unsigned int uint
Definition number.h:25
#define protected_data
Definition defs.h:208
#define _OWLCLASS
Definition defs.h:338