X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=blobdiff_plain;f=radiant%2Fselect.cpp;h=e0daa5fb66fb91e53576a06a95a261821f0206bb;hp=f92706b5bdb9ecc5156ce8f09bc0e7a63e772806;hb=d5e20f7336c5edf06fbc0c05cf30b8ad728128e7;hpb=e984b9f54a0c733aab34a8ec19724dc4114ade28 diff --git a/radiant/select.cpp b/radiant/select.cpp index f92706b5..e0daa5fb 100644 --- a/radiant/select.cpp +++ b/radiant/select.cpp @@ -707,12 +707,21 @@ void Select_FitTexture( float horizontal, float vertical ){ SceneChangeNotify(); } + +#include "commands.h" +#include "dialog.h" + inline void hide_node( scene::Node& node, bool hide ){ hide ? node.enable( scene::Node::eHidden ) : node.disable( scene::Node::eHidden ); } +bool g_nodes_be_hidden = false; + +BoolExportCaller g_hidden_caller( g_nodes_be_hidden ); +ToggleItem g_hidden_item( g_hidden_caller ); + class HideSelectedWalker : public scene::Graph::Walker { bool m_hide; @@ -724,6 +733,7 @@ bool pre( const scene::Path& path, scene::Instance& instance ) const { Selectable* selectable = Instance_getSelectable( instance ); if ( selectable != 0 && selectable->isSelected() ) { + g_nodes_be_hidden = m_hide; hide_node( path.top(), m_hide ); } return true; @@ -742,6 +752,7 @@ void Select_Hide(){ void HideSelected(){ Select_Hide(); GlobalSelectionSystem().setSelectedAll( false ); + g_hidden_item.update(); } @@ -765,6 +776,13 @@ void Scene_Hide_All( bool hide ){ void Select_ShowAllHidden(){ Scene_Hide_All( false ); SceneChangeNotify(); + g_nodes_be_hidden = false; + g_hidden_item.update(); +} + +void Hide_registerCommands(){ + GlobalCommands_insert( "ShowHidden", FreeCaller(), Accelerator( 'H', (GdkModifierType)GDK_SHIFT_MASK ) ); + GlobalToggles_insert( "HideSelected", FreeCaller(), ToggleItem::AddCallbackCaller( g_hidden_item ), Accelerator( 'H' ) ); }