diff --git a/game/engines/default/engine/dialogs/ShowEquipInven.lua b/game/engines/default/engine/dialogs/ShowEquipInven.lua
index 17c10a558f751636f95649d49cc5fd1ee9b6de82..cd37651390a264152f40b585e655a6fc3a67d392 100644
--- a/game/engines/default/engine/dialogs/ShowEquipInven.lua
+++ b/game/engines/default/engine/dialogs/ShowEquipInven.lua
@@ -145,6 +145,12 @@ function _M:select(item)
 	self.cur_item = item
 end
 
+function _M:on_focus(id, ui)
+	if self.focus_ui and self.focus_ui.ui == self.c_inven then self:select(self.c_inven.list[self.c_inven.sel])
+	elseif self.focus_ui and self.focus_ui.ui == self.c_equip then self:select(self.c_equip.list[self.c_equip.sel])
+	end
+end
+
 function _M:use(item, button, event)
 	if item then
 		if self.action(item.object, item.inven, item.item, button, event) then
diff --git a/game/engines/default/engine/dialogs/ShowStore.lua b/game/engines/default/engine/dialogs/ShowStore.lua
index b74897ab05dd1633fec2e9650b93d68f1ba579c2..62785e259988d8a896e31ef1fffe0ffd4de9bdb8 100644
--- a/game/engines/default/engine/dialogs/ShowStore.lua
+++ b/game/engines/default/engine/dialogs/ShowStore.lua
@@ -92,6 +92,12 @@ function _M:select(item)
 	self.cur_item = item
 end
 
+function _M:on_focus(id, ui)
+	if self.focus_ui and self.focus_ui.ui == self.c_inven then self:select(self.c_inven.list[self.c_inven.sel])
+	elseif self.focus_ui and self.focus_ui.ui == self.c_store then self:select(self.c_store.list[self.c_store.sel])
+	end
+end
+
 function _M:use(item)
 	if item and item.object then
 		if self.focus_ui and self.focus_ui.ui == self.c_store then
diff --git a/game/engines/default/engine/ui/Dialog.lua b/game/engines/default/engine/ui/Dialog.lua
index 715d46986821eab5bf3ec72816ac29a21d74506f..7e87627992a8e6abab924362d25511ec1a6b7ab7 100644
--- a/game/engines/default/engine/ui/Dialog.lua
+++ b/game/engines/default/engine/ui/Dialog.lua
@@ -401,6 +401,7 @@ function _M:moveFocus(v)
 	while start ~= id and cnt <= #self.uis do
 		if self.uis[id].ui.can_focus then
 			self:setFocus(id)
+			self:on_focus(id, self.uis[id].ui)
 			break
 		end
 		id = util.boundWrap(id + v, 1, #self.uis)
@@ -408,6 +409,9 @@ function _M:moveFocus(v)
 	end
 end
 
+function _M:on_focus(id, ui)
+end
+
 function _M:mouseEvent(button, x, y, xrel, yrel, bx, by, event)
 	-- Look for focus
 	for i = 1, #self.uis do