| 66 | /// right hand side. Responsible for drawing the resizer appearance, |
| 67 | /// resizing mouse events and constraining the resizing. |
| 68 | class ToolBarResizer final : public wxWindow |
| 69 | { |
| 70 | public: |
| 71 | ToolBarResizer(ToolBar *mBar); |
| 72 | virtual ~ToolBarResizer(); |
| 73 | |
| 74 | // We don't need or want to accept focus. |
| 75 | // Note that AcceptsFocusFromKeyboard() is overridden rather than |
| 76 | // AcceptsFocus(), so that resize can be cancelled by ESC |
| 77 | bool AcceptsFocusFromKeyboard() const override {return false;} |
| 78 | |
| 79 | private: |
| 80 | void OnErase(wxEraseEvent & event); |
| 81 | void OnPaint(wxPaintEvent & event); |
| 82 | void OnLeftDown(wxMouseEvent & event); |
| 83 | void OnLeftUp(wxMouseEvent & event); |
| 84 | void OnEnter(wxMouseEvent & event); |
| 85 | void OnLeave(wxMouseEvent & event); |
| 86 | void OnMotion(wxMouseEvent & event); |
| 87 | void ResizeBar(const wxSize &size); |
| 88 | void OnCaptureLost(wxMouseCaptureLostEvent & event); |
| 89 | void OnKeyDown(wxKeyEvent &event); |
| 90 | |
| 91 | private: |
| 92 | ToolBar *mBar; |
| 93 | wxPoint mResizeOffset; |
| 94 | wxSize mOrigSize; |
| 95 | wxWindowRef mOrigFocus{}; |
| 96 | |
| 97 | DECLARE_EVENT_TABLE() |
| 98 | }; |
| 99 | |
| 100 | // |
| 101 | // Event table |
| 102 | // |
| 103 | BEGIN_EVENT_TABLE( ToolBarResizer, wxWindow ) |
| 104 | EVT_ERASE_BACKGROUND( ToolBarResizer::OnErase ) |
| 105 | EVT_PAINT( ToolBarResizer::OnPaint ) |
| 106 | EVT_LEFT_DOWN( ToolBarResizer::OnLeftDown ) |
| 107 | EVT_LEFT_UP( ToolBarResizer::OnLeftUp ) |
| 108 | EVT_ENTER_WINDOW( ToolBarResizer::OnEnter ) |
| 109 | EVT_LEAVE_WINDOW( ToolBarResizer::OnLeave ) |
| 110 | EVT_MOTION( ToolBarResizer::OnMotion ) |
| 111 | EVT_MOUSE_CAPTURE_LOST( ToolBarResizer::OnCaptureLost ) |
| 112 | EVT_KEY_DOWN( ToolBarResizer::OnKeyDown ) |
| 113 | END_EVENT_TABLE(); |
| 114 | |
| 115 | ToolBarResizer::ToolBarResizer(ToolBar *bar) |
| 116 | : wxWindow(bar, wxID_ANY, wxDefaultPosition, wxSize(RWIDTH, -1)) |
| 117 | { |
| 118 | mBar = bar; |
| 119 | SetCursor( wxCURSOR_SIZEWE ); |
| 120 | } |
| 121 | |
| 122 | ToolBarResizer::~ToolBarResizer() |
| 123 | { |
| 124 | if(HasCapture()) |
| 125 | ReleaseMouse(); |
no test coverage detected