- 41
- 6
- Версия MoonLoader
- Другое
Здравствуйте
Моя проблема в том, что когда я пытаюсь использовать imgui.IsItemHovered()
imgui.IsMouseDoubleClicked(0) не кликабельно.
Если я не использую imgui.IsItemHovered() , я могу щелкнуть как обычно, но проблема в том, что когда я дважды щелкаю в любом месте экрана, он отправляет sampSendDialogResponse вместо того, чтобы отправлять его только при щелчке по фрейму.
Как я могу это исправить?
** Я исправил и обновил метод. Спасибо.
imgui.IsMouseDoubleClicked(0) не кликабельно.
Если я не использую imgui.IsItemHovered() , я могу щелкнуть как обычно, но проблема в том, что когда я дважды щелкаю в любом месте экрана, он отправляет sampSendDialogResponse вместо того, чтобы отправлять его только при щелчке по фрейму.
Как я могу это исправить?
** Я исправил и обновил метод. Спасибо.
Lua:
for i = 1, #items do
imgui.PushStyleColor(imgui.Col.FrameBgActive, imgui.ImVec4(0.200, 0.200, 0.200, 0.5))
imgui.PushStyleColor(imgui.Col.FrameBg, imgui.ImVec4(0, 0, 0, 0))
imgui.PushStyleColor(imgui.Col.FrameBgHovered, imgui.ImVec4(0.200, 0.200, 0.200, 0.5))
-- Call CustomSelectable to display the button.
local isHovered, isSelected = imgui.CustomSelectable(items[i], selectedItem[0] == i - 1, 5, test_font)
-- Check that the button is selected.
if isSelected and isHovered then
selectedItem[0] = i - 1 -- Update selectedItem when selecting an option.
-- Check double click on the selected option.
if imgui.IsMouseDoubleClicked(0) then
-- Use selectedItem[0] as index to send commands directly.
sampSendDialogResponse(722, 1, selectedItem[0], "")
closeWindow(true)
end
end
imgui.PopStyleColor(3)
end
Lua:
function imgui.CustomSelectable(label, selected, radius, font)
local style = imgui.GetStyle()
local padding = style.FramePadding
local pos = imgui.GetCursorScreenPos()
local windowWidth = imgui.GetWindowContentRegionWidth()
local size = imgui.CalcTextSize(label)
local topSpacing = 0
local bottomSpacing = -2
size.x = windowWidth
size.y = size.y + padding.y * 2
local rectMin = pos
local rectMax = imgui.ImVec2(pos.x + size.x, pos.y + size.y)
local isSelected = selected
local isHovered = imgui.IsMouseHoveringRect(rectMin, rectMax)
if imgui.InvisibleButton(label, imgui.ImVec2(size.x, size.y)) and isHovered then
isSelected = not selected
end
local color = imgui.GetColorU32(
isSelected and imgui.Col.FrameBgActive or
(isHovered and imgui.Col.FrameBgHovered or imgui.Col.FrameBg)
)
local drawList = imgui.GetWindowDrawList()
drawList:AddRectFilled(rectMin, rectMax, color, radius)
imgui.SetCursorScreenPos(imgui.ImVec2(pos.x + padding.x, pos.y + padding.y))
imgui.SetCursorPosY(imgui.GetCursorPosY() + topSpacing)
if font then
imgui.PushFont(font)
end
imgui.TextColoredRGB(label)
if font then
imgui.PopFont()
end
imgui.SetCursorPosY(imgui.GetCursorPosY() + bottomSpacing)
-- Return true if this specific item is clicked and hovered
return isHovered, isSelected
end
Последнее редактирование: