mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-29 01:20:17 +00:00
FileSelector: fix combobox behavior as now ComboBox::onChange() event is generated when the combobox is open
This commit is contained in:
parent
7e593e92e1
commit
6ed35b733c
@ -191,6 +191,7 @@ public:
|
|||||||
|
|
||||||
FileSelector::FileSelector()
|
FileSelector::FileSelector()
|
||||||
: Window(WithTitleBar, "")
|
: Window(WithTitleBar, "")
|
||||||
|
, m_navigationLocked(false)
|
||||||
{
|
{
|
||||||
app::WidgetLoader loader;
|
app::WidgetLoader loader;
|
||||||
loader.addWidgetType("filenameentry", new CustomFileNameEntryCreator);
|
loader.addWidgetType("filenameentry", new CustomFileNameEntryCreator);
|
||||||
@ -239,7 +240,7 @@ FileSelector::FileSelector()
|
|||||||
m_goBack->Click.connect(Bind<void>(&FileSelector::onGoBack, this));
|
m_goBack->Click.connect(Bind<void>(&FileSelector::onGoBack, this));
|
||||||
m_goForward->Click.connect(Bind<void>(&FileSelector::onGoForward, this));
|
m_goForward->Click.connect(Bind<void>(&FileSelector::onGoForward, this));
|
||||||
m_goUp->Click.connect(Bind<void>(&FileSelector::onGoUp, this));
|
m_goUp->Click.connect(Bind<void>(&FileSelector::onGoUp, this));
|
||||||
m_location->Change.connect(Bind<void>(&FileSelector::onLocationChange, this));
|
m_location->CloseListBox.connect(Bind<void>(&FileSelector::onLocationCloseListBox, this));
|
||||||
m_fileType->Change.connect(Bind<void>(&FileSelector::onFileTypeChange, this));
|
m_fileType->Change.connect(Bind<void>(&FileSelector::onFileTypeChange, this));
|
||||||
m_fileList->FileSelected.connect(Bind<void>(&FileSelector::onFileListFileSelected, this));
|
m_fileList->FileSelected.connect(Bind<void>(&FileSelector::onFileListFileSelected, this));
|
||||||
m_fileList->FileAccepted.connect(Bind<void>(&FileSelector::onFileListFileAccepted, this));
|
m_fileList->FileAccepted.connect(Bind<void>(&FileSelector::onFileListFileAccepted, this));
|
||||||
@ -610,7 +611,7 @@ void FileSelector::onGoUp()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Hook for the 'location' combo-box
|
// Hook for the 'location' combo-box
|
||||||
void FileSelector::onLocationChange()
|
void FileSelector::onLocationCloseListBox()
|
||||||
{
|
{
|
||||||
// When the user change the location we have to set the
|
// When the user change the location we have to set the
|
||||||
// current-folder in the 'fileview' widget
|
// current-folder in the 'fileview' widget
|
||||||
|
@ -51,7 +51,7 @@ namespace app {
|
|||||||
void onGoBack();
|
void onGoBack();
|
||||||
void onGoForward();
|
void onGoForward();
|
||||||
void onGoUp();
|
void onGoUp();
|
||||||
void onLocationChange();
|
void onLocationCloseListBox();
|
||||||
void onFileTypeChange();
|
void onFileTypeChange();
|
||||||
void onFileListFileSelected();
|
void onFileListFileSelected();
|
||||||
void onFileListFileAccepted();
|
void onFileListFileAccepted();
|
||||||
|
@ -85,7 +85,7 @@ ComboBox::ComboBox()
|
|||||||
m_entry = new ComboBoxEntry(this);
|
m_entry = new ComboBoxEntry(this);
|
||||||
m_button = new ComboBoxButton();
|
m_button = new ComboBoxButton();
|
||||||
m_window = NULL;
|
m_window = NULL;
|
||||||
m_selected = 0;
|
m_selected = -1;
|
||||||
m_editable = false;
|
m_editable = false;
|
||||||
m_clickopen = true;
|
m_clickopen = true;
|
||||||
m_casesensitive = true;
|
m_casesensitive = true;
|
||||||
@ -290,12 +290,16 @@ int ComboBox::getSelectedItemIndex() const
|
|||||||
|
|
||||||
void ComboBox::setSelectedItemIndex(int itemIndex)
|
void ComboBox::setSelectedItemIndex(int itemIndex)
|
||||||
{
|
{
|
||||||
if (itemIndex >= 0 && (size_t)itemIndex < m_items.size()) {
|
if (itemIndex >= 0 &&
|
||||||
|
(size_t)itemIndex < m_items.size() &&
|
||||||
|
m_selected != itemIndex) {
|
||||||
m_selected = itemIndex;
|
m_selected = itemIndex;
|
||||||
|
|
||||||
ListItems::iterator it = m_items.begin() + itemIndex;
|
ListItems::iterator it = m_items.begin() + itemIndex;
|
||||||
ListItem* item = *it;
|
ListItem* item = *it;
|
||||||
m_entry->setText(item->getText());
|
m_entry->setText(item->getText());
|
||||||
|
|
||||||
|
onChange();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,10 +485,8 @@ void ComboBoxListBox::onChangeSelectedItem()
|
|||||||
ListBox::onChangeSelectedItem();
|
ListBox::onChangeSelectedItem();
|
||||||
|
|
||||||
int index = getSelectedIndex();
|
int index = getSelectedIndex();
|
||||||
if (isValidItem(index)) {
|
if (isValidItem(index))
|
||||||
m_comboBox->setSelectedItemIndex(index);
|
m_comboBox->setSelectedItemIndex(index);
|
||||||
m_comboBox->onChange();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// When the mouse is clicked we switch the visibility-status of the list-box
|
// When the mouse is clicked we switch the visibility-status of the list-box
|
||||||
@ -525,6 +527,8 @@ void ComboBox::openListBox()
|
|||||||
|
|
||||||
m_window->openWindow();
|
m_window->openWindow();
|
||||||
getManager()->setFocus(m_listbox);
|
getManager()->setFocus(m_listbox);
|
||||||
|
|
||||||
|
onOpenListBox();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -570,6 +574,11 @@ void ComboBox::onChange()
|
|||||||
Change();
|
Change();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ComboBox::onOpenListBox()
|
||||||
|
{
|
||||||
|
OpenListBox();
|
||||||
|
}
|
||||||
|
|
||||||
void ComboBox::onCloseListBox()
|
void ComboBox::onCloseListBox()
|
||||||
{
|
{
|
||||||
CloseListBox();
|
CloseListBox();
|
||||||
|
@ -83,6 +83,7 @@ namespace ui {
|
|||||||
|
|
||||||
// Signals
|
// Signals
|
||||||
Signal0<void> Change;
|
Signal0<void> Change;
|
||||||
|
Signal0<void> OpenListBox;
|
||||||
Signal0<void> CloseListBox;
|
Signal0<void> CloseListBox;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -90,6 +91,7 @@ namespace ui {
|
|||||||
void onResize(ResizeEvent& ev) OVERRIDE;
|
void onResize(ResizeEvent& ev) OVERRIDE;
|
||||||
void onPreferredSize(PreferredSizeEvent& ev) OVERRIDE;
|
void onPreferredSize(PreferredSizeEvent& ev) OVERRIDE;
|
||||||
virtual void onChange();
|
virtual void onChange();
|
||||||
|
virtual void onOpenListBox();
|
||||||
virtual void onCloseListBox();
|
virtual void onCloseListBox();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user