Index: src/slic3r/GUI/Tab.cpp
--- src/slic3r/GUI/Tab.cpp.orig
+++ src/slic3r/GUI/Tab.cpp
@@ -472,7 +472,7 @@ void Tab::create_preset_tab()
         m_tabctrl->SetItemBold(sel_item, false);
         });
     m_tabctrl->Bind(wxEVT_TAB_SEL_CHANGED, [this](wxCommandEvent& event) {
-#ifdef __linux__
+#if defined(__linux__) || defined(__OpenBSD__)
         // Events queue is opposite On Linux. wxEVT_SET_FOCUS invokes after wxEVT_TAB_SEL_CHANGED,
         // and a result wxEVT_KILL_FOCUS doesn't invoke for the TextCtrls.
         // So, call SetFocus explicitly for this control before changing of the selection
@@ -4808,7 +4808,7 @@ void Tab::rebuild_page_tree()
     if (sel_item == m_last_select_item)
         m_last_select_item = item;
     else
-        m_last_select_item = NULL;
+        m_last_select_item = -1;
 
     // allow activate page before selection of a page_tree item
     m_disable_tree_sel_changed_event = false;
@@ -5334,7 +5334,7 @@ bool Tab::tree_sel_change_delayed(wxCommandEvent& even
 {
     // The issue apparently manifests when Show()ing a window with overlay scrollbars while the UI is frozen. For this reason,
     // we will Thaw the UI prematurely on Linux. This means destroing the no_updates object prematurely.
-#ifdef __linux__
+#if defined(__linux__) || defined(__OpenBSD__)
     std::unique_ptr<wxWindowUpdateLocker> no_updates(new wxWindowUpdateLocker(this));
 #else
     /* On Windows we use DoubleBuffering during rendering,
