mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-20 15:40:32 +00:00
Slightly improve journal window keyboard navigation
This commit is contained in:
parent
05814c0929
commit
7a3fbfb34a
@ -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…
x
Reference in New Issue
Block a user