Luanti
5.11.0-dev
▼
Luanti
The Minetest engine internal documentation
Deprecated List
►
Namespaces
►
Classes
▼
Files
▼
File List
►
benchmark
►
client
►
content
►
database
doc
►
gui
►
irrlicht_changes
►
mapgen
►
network
►
script
►
server
►
threading
►
unittest
►
util
►
activeobject.h
►
activeobjectmgr.h
►
catch.cpp
►
catch.h
chat.cpp
►
chat.h
►
chat_interface.h
►
chatmessage.h
►
particles.cpp
►
sound.h
clientdynamicinfo.cpp
►
clientdynamicinfo.h
►
collision.cpp
►
collision.h
►
config.h
►
constants.h
►
content_mapnode.cpp
►
content_mapnode.h
►
content_nodemeta.cpp
►
content_nodemeta.h
►
convert_json.cpp
►
convert_json.h
►
craftdef.cpp
►
craftdef.h
►
daynightratio.h
►
debug.cpp
►
debug.h
►
defaultsettings.cpp
►
defaultsettings.h
►
dummygamedef.h
►
dummymap.h
emerge.cpp
►
emerge.h
►
emerge_internal.h
►
environment.cpp
►
environment.h
►
exceptions.h
face_position_cache.cpp
►
face_position_cache.h
►
filesys.cpp
►
filesys.h
►
gamedef.h
►
gameparams.h
►
gettext.cpp
►
gettext.h
►
gettext_plural_form.cpp
►
gettext_plural_form.h
►
gettime.h
►
httpfetch.cpp
►
httpfetch.h
►
hud.cpp
►
hud.h
►
inventory.cpp
►
inventory.h
►
inventorymanager.cpp
►
inventorymanager.h
►
irr_aabb3d.h
►
irr_gui_ptr.h
►
irr_v2d.h
►
irr_v3d.h
►
irrlichttypes.h
irrlichttypes_bloated.h
irrlichttypes_extrabloated.h
►
itemdef.cpp
►
itemdef.h
►
itemgroup.h
►
itemstackmetadata.cpp
►
itemstackmetadata.h
json-forwards.h
light.cpp
►
light.h
►
lighting.h
►
log.cpp
►
log.h
►
log_internal.h
►
main.cpp
►
map.cpp
►
map.h
map_settings_manager.cpp
►
map_settings_manager.h
►
mapblock.cpp
►
mapblock.h
►
mapnode.cpp
►
mapnode.h
mapsector.cpp
►
mapsector.h
metadata.cpp
►
metadata.h
►
migratesettings.h
►
modchannels.cpp
►
modchannels.h
►
modifiedstate.h
nameidmapping.cpp
►
nameidmapping.h
►
nodedef.cpp
►
nodedef.h
nodemetadata.cpp
►
nodemetadata.h
nodetimer.cpp
►
nodetimer.h
►
noise.cpp
►
noise.h
objdef.cpp
►
objdef.h
►
object_properties.cpp
►
object_properties.h
►
particles.h
►
pathfinder.cpp
►
pathfinder.h
►
player.cpp
►
player.h
►
porting.cpp
►
porting.h
►
porting_android.cpp
►
porting_android.h
►
profiler.cpp
►
profiler.h
►
raycast.cpp
►
raycast.h
reflowscan.cpp
►
reflowscan.h
remoteplayer.cpp
►
remoteplayer.h
rollback_interface.cpp
►
rollback_interface.h
►
serialization.cpp
►
serialization.h
►
server.cpp
►
server.h
►
serverenvironment.cpp
►
serverenvironment.h
►
servermap.cpp
►
servermap.h
►
settings.cpp
►
settings.h
►
settings_translation_file.cpp
►
skyparams.h
staticobject.cpp
►
staticobject.h
terminal_chat_console.cpp
►
terminal_chat_console.h
►
texture_override.cpp
►
texture_override.h
tileanimation.cpp
►
tileanimation.h
►
tool.cpp
►
tool.h
►
translation.cpp
►
translation.h
►
version.cpp
►
version.h
►
voxel.cpp
►
voxel.h
►
voxelalgorithms.cpp
►
voxelalgorithms.h
►
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
Loading...
Searching...
No Matches
irr_gui_ptr.h
Go to the documentation of this file.
1
// Luanti
2
// SPDX-License-Identifier: LGPL-2.1-or-later
3
// Copyright (C) 2024 grorp, Gregor Parzefall <grorp@posteo.de>
4
5
#pragma once
6
#include <memory>
7
#include "IGUIElement.h"
8
9
// We cannot use irr_ptr for Irrlicht GUI elements we own.
10
// Option 1: Pass IGUIElement* returned by IGUIEnvironment::add* into irr_ptr
11
// constructor.
12
// -> We steal the reference owned by IGUIEnvironment and drop it later,
13
// causing the IGUIElement to be deleted while IGUIEnvironment still
14
// references it.
15
// Option 2: Pass IGUIElement* returned by IGUIEnvironment::add* into irr_ptr::grab.
16
// -> We add another reference and drop it later, but since IGUIEnvironment
17
// still references the IGUIElement, it is never deleted.
18
// To make IGUIEnvironment drop its reference to the IGUIElement, we have to call
19
// IGUIElement::remove, so that's what we'll do.
20
template
<
typename
T>
21
std::shared_ptr<T>
grab_gui_element
(T *element)
22
{
23
static_assert
(std::is_base_of_v<irr::gui::IGUIElement, T>,
24
"grab_gui_element only works for IGUIElement"
);
25
return
std::shared_ptr<T>(element, [](T *e) {
26
e->remove();
27
});
28
}
21
std::shared_ptr<T>
grab_gui_element
(T *element) {
…
}
grab_gui_element
std::shared_ptr< T > grab_gui_element(T *element)
Definition
irr_gui_ptr.h:21
irr_gui_ptr.h
Generated on Sat Feb 1 2025 10:20:55 for Luanti by
1.11.0