mirror of
				https://github.com/TES3MP/openmw-tes3mp.git
				synced 2025-10-31 17:56:47 +00:00 
			
		
		
		
	Slightly improve journal window keyboard navigation
This commit is contained in:
		
							parent
							
								
									05814c0929
								
							
						
					
					
						commit
						7a3fbfb34a
					
				
					 2 changed files with 52 additions and 20 deletions
				
			
		|  | @ -8,6 +8,7 @@ | |||
| 
 | ||||
| #include <MyGUI_TextBox.h> | ||||
| #include <MyGUI_Button.h> | ||||
| #include <MyGUI_InputManager.h> | ||||
| 
 | ||||
| #include <components/misc/stringops.hpp> | ||||
| #include <components/widgets/imagebutton.hpp> | ||||
|  | @ -84,10 +85,16 @@ namespace | |||
| 
 | ||||
|         void adviseButtonClick (char const * name, void (JournalWindowImpl::*Handler) (MyGUI::Widget* _sender)) | ||||
|         { | ||||
|             getWidget <Gui::ImageButton> (name) -> | ||||
|             getWidget <MyGUI::Widget> (name) -> | ||||
|                 eventMouseButtonClick += newDelegate(this, Handler); | ||||
|         } | ||||
| 
 | ||||
|         void adviseKeyPress (char const * name, void (JournalWindowImpl::*Handler) (MyGUI::Widget* _sender, MyGUI::KeyCode key, MyGUI::Char character)) | ||||
|         { | ||||
|             getWidget <MyGUI::Widget> (name) -> | ||||
|                 eventKeyButtonPressed += newDelegate(this, Handler); | ||||
|         } | ||||
| 
 | ||||
|         MWGui::BookPage* getPage (char const * name) | ||||
|         { | ||||
|             return getWidget <MWGui::BookPage> (name); | ||||
|  | @ -111,6 +118,12 @@ namespace | |||
|             adviseButtonClick (ShowAllBTN,    &JournalWindowImpl::notifyShowAll   ); | ||||
|             adviseButtonClick (ShowActiveBTN, &JournalWindowImpl::notifyShowActive); | ||||
| 
 | ||||
|             adviseKeyPress (OptionsBTN, &JournalWindowImpl::notifyKeyPress); | ||||
|             adviseKeyPress (PrevPageBTN, &JournalWindowImpl::notifyKeyPress); | ||||
|             adviseKeyPress (NextPageBTN, &JournalWindowImpl::notifyKeyPress); | ||||
|             adviseKeyPress (CloseBTN, &JournalWindowImpl::notifyKeyPress); | ||||
|             adviseKeyPress (JournalBTN, &JournalWindowImpl::notifyKeyPress); | ||||
| 
 | ||||
|             Gui::MWList* list = getWidget<Gui::MWList>(QuestsList); | ||||
|             list->eventItemSelected += MyGUI::newDelegate(this, &JournalWindowImpl::notifyQuestClicked); | ||||
| 
 | ||||
|  | @ -237,6 +250,8 @@ namespace | |||
|                     --page; | ||||
|             } | ||||
|             updateShowingPages(); | ||||
| 
 | ||||
|             MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(getWidget<MyGUI::Widget>(CloseBTN)); | ||||
|         } | ||||
| 
 | ||||
|         void onClose() | ||||
|  | @ -348,8 +363,19 @@ namespace | |||
|                 relPages = 0; | ||||
|             } | ||||
| 
 | ||||
|             setVisible (PrevPageBTN, page > 0); | ||||
|             setVisible (NextPageBTN, relPages > 2); | ||||
|             MyGUI::Widget* nextPageBtn = getWidget<MyGUI::Widget>(NextPageBTN); | ||||
|             MyGUI::Widget* prevPageBtn = getWidget<MyGUI::Widget>(PrevPageBTN); | ||||
| 
 | ||||
|             MyGUI::Widget* focus = MyGUI::InputManager::getInstance().getKeyFocusWidget(); | ||||
|             bool nextPageVisible = relPages > 2; | ||||
|             nextPageBtn->setVisible(nextPageVisible); | ||||
|             bool prevPageVisible = page > 0; | ||||
|             prevPageBtn->setVisible(prevPageVisible); | ||||
| 
 | ||||
|             if (focus == nextPageBtn && !nextPageVisible && prevPageVisible) | ||||
|                 MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(prevPageBtn); | ||||
|             else if (focus == prevPageBtn && !prevPageVisible && nextPageVisible) | ||||
|                 MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(nextPageBtn); | ||||
| 
 | ||||
|             setVisible (PageOneNum, relPages > 0); | ||||
|             setVisible (PageTwoNum, relPages > 1); | ||||
|  | @ -361,6 +387,14 @@ namespace | |||
|             setText (PageTwoNum, page + 2); | ||||
|         } | ||||
| 
 | ||||
|         void notifyKeyPress(MyGUI::Widget* sender, MyGUI::KeyCode key, MyGUI::Char character) | ||||
|         { | ||||
|             if (key == MyGUI::KeyCode::ArrowUp) | ||||
|                 notifyPrevPage(sender); | ||||
|             else if (key == MyGUI::KeyCode::ArrowDown) | ||||
|                 notifyNextPage(sender); | ||||
|         } | ||||
| 
 | ||||
|         void notifyTopicClicked (intptr_t linkId) | ||||
|         { | ||||
|             Book topicBook = createTopicBook (linkId); | ||||
|  |  | |||
|  | @ -3,32 +3,27 @@ | |||
| <MyGUI type="Layout"> | ||||
| 
 | ||||
|   <Widget type="Window" skin="" layer="JournalBooks" align="Left|Top" position="0 0 565 390" name="_Main"> | ||||
|     <Property key="NeedKey" value="false"/> | ||||
|     <!-- pages --> | ||||
|     <Widget type="ImageBox" skin="ImageBox" position="-70 0 705 390" align="Top|Right" name="JImage"> | ||||
|     <Property key="ImageTexture" value="textures\tx_menubook.dds"/> | ||||
|     <Widget type="Widget" position="70 0 565 390" align="Top|Right"> | ||||
| 
 | ||||
| 
 | ||||
|       <Widget type="Widget" position="0 0 282 390"> | ||||
|           <Widget type="ImageButton" skin="ImageBox" position="205 350 48 32" name="PrevPageBTN"> | ||||
|             <Property key="ImageHighlighted" value="textures\tx_menubook_prev_over.dds"/> | ||||
|             <Property key="ImageNormal" value="textures\tx_menubook_prev_idle.dds"/> | ||||
|             <Property key="ImagePushed" value="textures\tx_menubook_prev_pressed.dds"/> | ||||
|           </Widget> | ||||
|       </Widget> | ||||
|       <Widget type="Widget" position="282 0 282 390"> | ||||
|           <Widget type="ImageButton" skin="ImageBox" position="18 350 48 32" name="NextPageBTN"> | ||||
|             <Property key="ImageHighlighted" value="textures\tx_menubook_next_over.dds"/> | ||||
|             <Property key="ImageNormal" value="textures\tx_menubook_next_idle.dds"/> | ||||
|             <Property key="ImagePushed" value="textures\tx_menubook_next_pressed.dds"/> | ||||
|           </Widget> | ||||
|       </Widget> | ||||
| 
 | ||||
|       <!-- buttons --> | ||||
|       <Widget type="ImageButton" skin="ImageBox" position="40 350 64 32" name="OptionsBTN"> | ||||
|         <!-- Image set at runtime since it may not be available in all versions of the game --> | ||||
|       </Widget> | ||||
| 
 | ||||
|       <Widget type="ImageButton" skin="ImageBox" position="205 350 48 32" name="PrevPageBTN"> | ||||
|         <Property key="ImageHighlighted" value="textures\tx_menubook_prev_over.dds"/> | ||||
|         <Property key="ImageNormal" value="textures\tx_menubook_prev_idle.dds"/> | ||||
|         <Property key="ImagePushed" value="textures\tx_menubook_prev_pressed.dds"/> | ||||
|       </Widget> | ||||
|       <Widget type="ImageButton" skin="ImageBox" position="300 350 48 32" name="NextPageBTN"> | ||||
|         <Property key="ImageHighlighted" value="textures\tx_menubook_next_over.dds"/> | ||||
|         <Property key="ImageNormal" value="textures\tx_menubook_next_idle.dds"/> | ||||
|         <Property key="ImagePushed" value="textures\tx_menubook_next_pressed.dds"/> | ||||
|       </Widget> | ||||
| 
 | ||||
|       <Widget type="TextBox" skin="NormalText" position="150 350 32 16" name="PageOneNum"> | ||||
|         <Property key="TextColour" value="0 0 0"/> | ||||
|       </Widget> | ||||
|  | @ -36,11 +31,14 @@ | |||
|       <Widget type="TextBox" skin="NormalText" position="410 350 32 16" name="PageTwoNum"> | ||||
|         <Property key="TextColour" value="0 0 0"/> | ||||
|       </Widget> | ||||
| 
 | ||||
| 
 | ||||
|       <Widget type="ImageButton" skin="ImageBox" position="460 350 48 32" name="CloseBTN"> | ||||
|         <Property key="ImageHighlighted" value="textures\tx_menubook_close_over.dds"/> | ||||
|         <Property key="ImageNormal" value="textures\tx_menubook_close_idle.dds"/> | ||||
|         <Property key="ImagePushed" value="textures\tx_menubook_close_pressed.dds"/> | ||||
|       </Widget> | ||||
| 
 | ||||
|       <Widget type="ImageButton" skin="ImageBox" position="460 350 64 32" name="JournalBTN"> | ||||
|         <Property key="ImageHighlighted" value="textures\tx_menubook_journal_over.dds"/> | ||||
|         <Property key="ImageNormal" value="textures\tx_menubook_journal_idle.dds"/> | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue