diff --git a/src/gui/control/card_editor.cpp b/src/gui/control/card_editor.cpp index 68582a64..c6aa74d1 100644 --- a/src/gui/control/card_editor.cpp +++ b/src/gui/control/card_editor.cpp @@ -65,7 +65,7 @@ void DataEditor::addAction(Action* action) { // ----------------------------------------------------------------------------- : Selection bool DataEditor::AcceptsFocus() const { - return wxControl::AcceptsFocus(); + return wxWindow::AcceptsFocus(); } void DataEditor::select(ValueViewer* v) { diff --git a/src/gui/control/card_viewer.cpp b/src/gui/control/card_viewer.cpp index a489621c..5bb26d70 100644 --- a/src/gui/control/card_viewer.cpp +++ b/src/gui/control/card_viewer.cpp @@ -20,7 +20,7 @@ DEFINE_EVENT_TYPE(EVENT_SIZE_CHANGE); // ----------------------------------------------------------------------------- : CardViewer CardViewer::CardViewer(Window* parent, int id, long style) - : wxControl(parent, id, wxDefaultPosition, wxDefaultSize, style) + : wxPanel(parent, id, wxDefaultPosition, wxDefaultSize, style & wxNO_BORDER ? style : style | wxSUNKEN_BORDER) , up_to_date(false) {} diff --git a/src/gui/control/card_viewer.hpp b/src/gui/control/card_viewer.hpp index b8350465..797a8925 100644 --- a/src/gui/control/card_viewer.hpp +++ b/src/gui/control/card_viewer.hpp @@ -22,7 +22,7 @@ DECLARE_EVENT_TYPE(EVENT_SIZE_CHANGE, ) // ----------------------------------------------------------------------------- : CardViewer /// A control to view a single card -class CardViewer : public wxControl, public DataViewer { +class CardViewer : public wxPanel, public DataViewer { public: CardViewer(Window* parent, int id, long style = 0); diff --git a/src/gui/control/gallery_list.cpp b/src/gui/control/gallery_list.cpp index ab73d577..332cb187 100644 --- a/src/gui/control/gallery_list.cpp +++ b/src/gui/control/gallery_list.cpp @@ -72,8 +72,17 @@ void GalleryList::select(size_t item, size_t subcolumn, bool event) { } void GalleryList::update() { - select(subcolumns[active_subcolumn].selection); - updateScrollbar(); + // ensure selection is visible + SubColumn col = subcolumns[active_subcolumn]; + if (col.selection != NO_SELECTION) { + if (itemStart(col.selection) < visible_start) { + scrollTo(itemStart(col.selection), false); + updateScrollbar(); + } else if (itemEnd(col.selection) > visibleEnd()) { + scrollTo(itemEnd(col.selection) + visible_start - visibleEnd(), false); + updateScrollbar(); + } + } Refresh(false); } diff --git a/src/gui/control/text_ctrl.cpp b/src/gui/control/text_ctrl.cpp index 307a08ba..e05e2ffa 100644 --- a/src/gui/control/text_ctrl.cpp +++ b/src/gui/control/text_ctrl.cpp @@ -37,7 +37,7 @@ void TextCtrl::draw(DC& dc) { } bool TextCtrl::AcceptsFocus() const { - return wxControl::AcceptsFocus() && + return wxWindow::AcceptsFocus() && !viewers.empty() && static_cast(*viewers.front()->getValue()).editable; }