mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
Upload
This commit is contained in:
90
lua/includes/util/tooltips.lua
Normal file
90
lua/includes/util/tooltips.lua
Normal file
@@ -0,0 +1,90 @@
|
||||
--[[
|
||||
| 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 Tooltip = nil
|
||||
local TooltippedPanel = nil
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Name: ChangeTooltip
|
||||
Called from engine on hovering over a panel
|
||||
-----------------------------------------------------------]]
|
||||
function RemoveTooltip()
|
||||
|
||||
if ( !IsValid( Tooltip ) ) then return true end
|
||||
|
||||
Tooltip:Close()
|
||||
Tooltip = nil
|
||||
|
||||
return true
|
||||
|
||||
end
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Name: FindTooltip
|
||||
-----------------------------------------------------------]]
|
||||
function FindTooltip( panel )
|
||||
|
||||
-- Look at the parent panel for tooltips.
|
||||
while ( IsValid( panel ) ) do
|
||||
|
||||
if ( panel.strTooltipText || panel.pnlTooltipPanel || panel.pnlTooltipPanelOverride ) then
|
||||
return panel.strTooltipText, panel.pnlTooltipPanel, panel, panel.pnlTooltipPanelOverride
|
||||
end
|
||||
|
||||
panel = panel:GetParent()
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Name: ChangeTooltip
|
||||
Called from engine on hovering over a panel
|
||||
-----------------------------------------------------------]]
|
||||
function ChangeTooltip( panel )
|
||||
|
||||
RemoveTooltip()
|
||||
|
||||
local Text, ContentPanel, PositionPanel, PanelOverride = FindTooltip( panel )
|
||||
if ( !Text && !IsValid( ContentPanel ) && !PanelOverride ) then return end
|
||||
|
||||
Tooltip = vgui.Create( PanelOverride or "DTooltip" )
|
||||
|
||||
if ( Text ) then
|
||||
|
||||
Tooltip:SetText( Text )
|
||||
|
||||
elseif ( IsValid( ContentPanel ) ) then
|
||||
|
||||
Tooltip:SetContents( ContentPanel, false )
|
||||
|
||||
end
|
||||
|
||||
Tooltip:OpenForPanel( PositionPanel )
|
||||
TooltippedPanel = panel
|
||||
|
||||
end
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Name: EndTooltip
|
||||
Called from engine on exiting from a panel
|
||||
-----------------------------------------------------------]]
|
||||
function EndTooltip( panel )
|
||||
|
||||
-- Don't do these checks, the engine has a problem with determing
|
||||
-- which panel is currently being hovered in some very specific and unknown conditions
|
||||
|
||||
--if ( !IsValid( TooltippedPanel ) ) then return end
|
||||
--if ( TooltippedPanel != panel ) then return end
|
||||
|
||||
RemoveTooltip()
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user