mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	ENH: TabCtrl: support arrow key events
Change-Id: I16423d542246925e2469541b1d634d6c4373af69
This commit is contained in:
		
							parent
							
								
									43cd7c8315
								
							
						
					
					
						commit
						85ffeb291d
					
				
					 3 changed files with 38 additions and 4 deletions
				
			
		|  | @ -206,7 +206,7 @@ void ComboBox::DoSetItemClientData(unsigned int n, void *data) | |||
| 
 | ||||
| void ComboBox::mouseDown(wxMouseEvent &event) | ||||
| { | ||||
|     //SetFocus();
 | ||||
|     SetFocus(); | ||||
|     if (drop_down) { | ||||
|         drop.Hide(); | ||||
|     } else if (drop.HasDismissLongTime()) { | ||||
|  | @ -230,7 +230,8 @@ void ComboBox::mouseWheelMoved(wxMouseEvent &event) | |||
|     } | ||||
| } | ||||
| 
 | ||||
| void ComboBox::keyDown(wxKeyEvent& event) { | ||||
| void ComboBox::keyDown(wxKeyEvent& event) | ||||
| { | ||||
|     switch (event.GetKeyCode()) { | ||||
|         case WXK_RETURN: | ||||
|         case WXK_SPACE: | ||||
|  |  | |||
|  | @ -5,7 +5,8 @@ wxDEFINE_EVENT( wxEVT_TAB_SEL_CHANGED, wxCommandEvent ); | |||
| 
 | ||||
| BEGIN_EVENT_TABLE(TabCtrl, StaticBox) | ||||
| 
 | ||||
| // catch paint events
 | ||||
| EVT_KEY_DOWN(TabCtrl::keyDown) | ||||
| 
 | ||||
| END_EVENT_TABLE() | ||||
| 
 | ||||
| /*
 | ||||
|  | @ -201,6 +202,16 @@ void TabCtrl::DoSetSize(int x, int y, int width, int height, int sizeFlags) | |||
|     relayout(); | ||||
| } | ||||
| 
 | ||||
| #ifdef __WIN32__ | ||||
| 
 | ||||
| WXLRESULT TabCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) | ||||
| { | ||||
|     if (nMsg == WM_GETDLGCODE) { return DLGC_WANTARROWS; } | ||||
|     return wxWindow::MSWWindowProc(nMsg, wParam, lParam); | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| void TabCtrl::relayout() | ||||
| { | ||||
|     int offset = 10; | ||||
|  | @ -243,11 +254,28 @@ void TabCtrl::relayout() | |||
| 
 | ||||
| void TabCtrl::buttonClicked(wxCommandEvent &event) | ||||
| { | ||||
|     auto btn = event.GetEventObject(); | ||||
|     SetFocus(); | ||||
|     auto btn  = event.GetEventObject(); | ||||
|     auto iter = std::find(btns.begin(), btns.end(), btn); | ||||
|     SelectItem(iter == btns.end() ? -1 : iter - btns.begin()); | ||||
| } | ||||
| 
 | ||||
| void TabCtrl::keyDown(wxKeyEvent &event) | ||||
| { | ||||
|     switch (event.GetKeyCode()) { | ||||
|     case WXK_UP: | ||||
|     case WXK_DOWN: | ||||
|     case WXK_LEFT: | ||||
|     case WXK_RIGHT: | ||||
|         if ((event.GetKeyCode() == WXK_UP || event.GetKeyCode() == WXK_LEFT) && GetSelection() > 0) { | ||||
|             SelectItem(GetSelection() - 1); | ||||
|         } else if ((event.GetKeyCode() == WXK_DOWN || event.GetKeyCode() == WXK_RIGHT) && GetSelection() + 1 < btns.size()) { | ||||
|             SelectItem(GetSelection() + 1); | ||||
|         } | ||||
|         break; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void TabCtrl::doRender(wxDC& dc) | ||||
| { | ||||
|     wxSize size = GetSize(); | ||||
|  |  | |||
|  | @ -65,9 +65,14 @@ public: | |||
| private: | ||||
|     virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); | ||||
| 
 | ||||
| #ifdef __WIN32__ | ||||
|     WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) override; | ||||
| #endif | ||||
| 
 | ||||
|     void relayout(); | ||||
| 
 | ||||
|     void buttonClicked(wxCommandEvent & event); | ||||
|     void keyDown(wxKeyEvent &event); | ||||
| 
 | ||||
|     void doRender(wxDC & dc) override; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 chunmao.guo
						chunmao.guo