]>
git.saurik.com Git - wxWidgets.git/blob - contrib/include/wx/fl/bardragpl.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Contrib. demo
4 // Author: Aleksandras Gluchovas
8 // Copyright: (c) Aleksandras Gluchovas
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef __BARDRAGPL_G__
13 #define __BARDRAGPL_G__
16 #pragma interface "bardragpl.h"
19 #include "wx/fl/controlbar.h"
20 #include "wx/fl/toolwnd.h"
22 class cbBarDragPlugin
: public cbPluginBase
24 DECLARE_DYNAMIC_CLASS( cbBarDragPlugin
)
27 // plugin is active only in bar-dragging state
29 bool mCanStick
; // flag used to prevent "bouncing" of hint-rectangle
30 wxScreenDC
* mpScrDc
; // created while tracking hint-rect
31 wxCursor
* mpCurCursor
;
33 // rectnagle shows the position/dimensions of the bar,
34 // if it would be docked now
43 cbDockPane
* mpSrcPane
; // pane, from which the bar was originally taken
44 int mBarWidthInSrcPane
;
46 cbDockPane
* mpCurPane
;
48 cbBarInfo
* mpDraggedBar
; // bar, which is being dragged
50 wxRect mFloatedBarBounds
;
52 public: /*** public properties ***/
54 int mInClientHintBorder
; // when hint-rect moves within client window area,
55 // the thicker rectangle is drawn using hatched brush,
56 // the default border width for this rectangle is 8 pix.
61 void AdjustHintRect( wxPoint
& mousePos
);
63 void ClipRectInFrame( wxRect
& rect
);
64 void ClipPosInFrame( wxPoint
& pos
);
66 cbDockPane
* HitTestPanes( wxRect
& rect
);
67 cbDockPane
* HitTestPanes( wxPoint
& pos
);
68 bool HitsPane( cbDockPane
* pPane
, wxRect
& rect
);
70 void CalcOnScreenDims( wxRect
& rect
);
72 int GetDistanceToPane( cbDockPane
* pPane
, wxPoint
& mousePos
);
74 bool IsInOtherPane ( wxPoint
& mousePos
);
75 bool IsInClientArea( wxPoint
& mousePos
);
76 bool IsInClientArea( wxRect
& rect
);
78 void StickToPane( cbDockPane
* pPane
, wxPoint
& mousePos
);
79 void UnstickFromPane( cbDockPane
* pPane
, wxPoint
& mousePos
);
81 int GetBarWidthInPane( cbDockPane
* pPane
);
82 int GetBarHeightInPane( cbDockPane
* pPane
);
84 // on-screen hint-tracking related methods
88 void DrawHintRect ( wxRect
& rect
, bool isInClientRect
);
89 void EraseHintRect( wxRect
& rect
, bool isInClientRect
);
91 void FinishTracking();
93 void DoDrawHintRect( wxRect
& rect
, bool isInClientRect
);
95 void RectToScr( wxRect
& frameRect
, wxRect
& scrRect
);
97 void ShowHint( bool prevWasInClient
);
100 cbBarDragPlugin(void);
102 cbBarDragPlugin( wxFrameLayout
* pPanel
, int paneMask
= wxALL_PANES
);
104 virtual ~cbBarDragPlugin();
106 // handlers for plugin events
108 void OnMouseMove( cbMotionEvent
& event
);
109 void OnLButtonUp( cbLeftUpEvent
& event
);
110 void OnLButtonDown( cbLeftDownEvent
& event
);
111 void OnLDblClick( cbLeftDClickEvent
& event
);
113 // handles event, which oriniates from itself
114 void OnDrawHintRect( cbDrawHintRectEvent
& event
);
116 void OnStartBarDragging( cbStartBarDraggingEvent
& event
);
118 DECLARE_EVENT_TABLE()
121 #endif /* __BARDRAGPL_G__ */