mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 13:23:46 +03:00
70 lines
1.2 KiB
Lua
70 lines
1.2 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
|
|
local tblOpenMenus = {}
|
|
|
|
function RegisterDermaMenuForClose( dmenu )
|
|
|
|
table.insert( tblOpenMenus, dmenu )
|
|
|
|
end
|
|
|
|
function DermaMenu( parentmenu, parent )
|
|
|
|
if ( !parentmenu ) then CloseDermaMenus() end
|
|
|
|
local dmenu = vgui.Create( "DMenu", parent )
|
|
|
|
return dmenu
|
|
|
|
end
|
|
|
|
function CloseDermaMenus()
|
|
|
|
for k, dmenu in pairs( tblOpenMenus ) do
|
|
|
|
if ( IsValid( dmenu ) ) then
|
|
|
|
dmenu:SetVisible( false )
|
|
if ( dmenu:GetDeleteSelf() ) then
|
|
dmenu:Remove()
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
tblOpenMenus = {}
|
|
hook.Run( "CloseDermaMenus" )
|
|
|
|
end
|
|
|
|
--
|
|
-- Here we detect when the mouse is pressed on another panel
|
|
-- This allows us to close the menus.
|
|
--
|
|
local function DermaDetectMenuFocus( panel, mousecode )
|
|
|
|
if ( IsValid( panel ) ) then
|
|
|
|
if ( panel.m_bIsMenuComponent ) then return end
|
|
|
|
-- Is the parent a menu?
|
|
return DermaDetectMenuFocus( panel:GetParent(), mousecode )
|
|
|
|
end
|
|
|
|
CloseDermaMenus()
|
|
|
|
end
|
|
|
|
hook.Add( "VGUIMousePressed", "DermaDetectMenuFocus", DermaDetectMenuFocus )
|