]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/texwindow.cpp
Merge commit '3a78d902017a780e65f21f12c709aa746dfcab84' into garux-merge
[xonotic/netradiant.git] / radiant / texwindow.cpp
index 240901552b29e914328346df32ef78c75c98486a..23174f1c544c8c5a39cc78444b133d9a144ece41 100644 (file)
@@ -334,6 +334,7 @@ bool m_move_started;
 int m_uniformTextureSize;
 int m_uniformTextureMinSize;
 
+bool m_hideNonShadersInCommon;
 // Return the display width of a texture in the texture browser
 void getTextureWH( qtexture_t* tex, int &W, int &H ){
                // Don't use uniform size
@@ -394,6 +395,7 @@ TextureBrowser() :
        m_tags( false ),
        m_uniformTextureSize( 160 ),
        m_uniformTextureMinSize( 48 ),
+       m_hideNonShadersInCommon( true ),
        m_move_started( false ){
 }
 };
@@ -532,7 +534,7 @@ bool TextureSearch_IsShown( const char* name ){
 }
 
 // if texture_showinuse jump over non in-use textures
-bool Texture_IsShown( IShader* shader, bool show_shaders, bool show_textures, bool hideUnused ){
+bool Texture_IsShown( IShader* shader, bool show_shaders, bool show_textures, bool hideUnused, bool hideNonShadersInCommon ){
        // filter missing shaders
        // ugly: filter on built-in fallback name after substitution
        if ( g_TextureBrowser_filterMissing ) {
@@ -579,6 +581,11 @@ bool Texture_IsShown( IShader* shader, bool show_shaders, bool show_textures, bo
                return false;
        }
 
+       if( hideNonShadersInCommon && shader->IsDefault() && !shader->IsInUse() //&& g_TextureBrowser_currentDirectory != ""
+               && shader_equal_prefix( shader_get_textureName( shader->getName() ), TextureBrowser_getComonShadersDir() ) ){
+               return false;
+       }
+
        if ( GlobalTextureBrowser().m_searchedTags ) {
                if ( !TextureSearch_IsShown( shader->getName() ) ) {
                        return false;
@@ -615,7 +622,7 @@ void TextureBrowser_evaluateHeight( TextureBrowser& textureBrowser ){
                {
                        IShader* shader = QERApp_ActiveShaders_IteratorCurrent();
 
-                       if ( !Texture_IsShown( shader, textureBrowser.m_showShaders, textureBrowser.m_showTextures, textureBrowser.m_hideUnused ) ) {
+                       if ( !Texture_IsShown( shader, textureBrowser.m_showShaders, textureBrowser.m_showTextures, textureBrowser.m_hideUnused, textureBrowser.m_hideNonShadersInCommon ) ) {
                                continue;
                        }
 
@@ -967,13 +974,7 @@ void TextureBrowser_enableAlpha( const Callback<void(bool)> & importer ){
 typedef FreeCaller<void(const Callback<void(bool)> &), TextureBrowser_enableAlpha> TextureBrowser_enableAlphaExport;
 
 void TextureBrowser_SetHideUnused( TextureBrowser& textureBrowser, bool hideUnused ){
-       if ( hideUnused ) {
-               textureBrowser.m_hideUnused = true;
-       }
-       else
-       {
-               textureBrowser.m_hideUnused = false;
-       }
+       textureBrowser.m_hideUnused = hideUnused;
 
        textureBrowser.m_hideunused_item.update();
 
@@ -1001,7 +1002,7 @@ void TextureBrowser_Focus( TextureBrowser& textureBrowser, const char* name ){
        {
                IShader* shader = QERApp_ActiveShaders_IteratorCurrent();
 
-               if ( !Texture_IsShown( shader, textureBrowser.m_showShaders, textureBrowser.m_showTextures, textureBrowser.m_hideUnused ) ) {
+               if ( !Texture_IsShown( shader, textureBrowser.m_showShaders, textureBrowser.m_showTextures, textureBrowser.m_hideUnused, textureBrowser.m_hideNonShadersInCommon ) ) {
                        continue;
                }
 
@@ -1045,7 +1046,7 @@ IShader* Texture_At( TextureBrowser& textureBrowser, int mx, int my ){
        {
                IShader* shader = QERApp_ActiveShaders_IteratorCurrent();
 
-               if ( !Texture_IsShown( shader, textureBrowser.m_showShaders, textureBrowser.m_showTextures, textureBrowser.m_hideUnused ) ) {
+               if ( !Texture_IsShown( shader, textureBrowser.m_showShaders, textureBrowser.m_showTextures, textureBrowser.m_hideUnused, textureBrowser.m_hideNonShadersInCommon ) ) {
                        continue;
                }
 
@@ -1190,7 +1191,7 @@ void Texture_Draw( TextureBrowser& textureBrowser ){
        {
                IShader* shader = QERApp_ActiveShaders_IteratorCurrent();
 
-               if ( !Texture_IsShown( shader, textureBrowser.m_showShaders, textureBrowser.m_showTextures, textureBrowser.m_hideUnused ) ) {
+               if ( !Texture_IsShown( shader, textureBrowser.m_showShaders, textureBrowser.m_showTextures, textureBrowser.m_hideUnused, textureBrowser.m_hideNonShadersInCommon ) ) {
                        continue;
                }
 
@@ -2815,6 +2816,14 @@ void TextureBrowser_constructPreferences( PreferencesPage& page ){
                const char* startup_shaders[] = { "None", TextureBrowser_getComonShadersName() };
                page.appendCombo( "Load Shaders at Startup", reinterpret_cast<int&>( GlobalTextureBrowser().m_startupShaders ), STRING_ARRAY_RANGE( startup_shaders ) );
        }
+       {
+               StringOutputStream sstream( 256 );
+               sstream << "Hide nonShaders in " << TextureBrowser_getComonShadersDir() << " folder";
+               page.appendCheckBox(
+                       "", sstream.c_str(),
+                       GlobalTextureBrowser().m_hideNonShadersInCommon
+                       );
+       }
 }
 
 void TextureBrowser_constructPage( PreferenceGroup& group ){
@@ -2867,6 +2876,7 @@ void TextureBrowser_Construct(){
        GlobalPreferenceSystem().registerPreference( "LoadShaders", make_property_string( reinterpret_cast<int&>( GlobalTextureBrowser().m_startupShaders ) ) );
        GlobalPreferenceSystem().registerPreference( "WheelMouseInc", make_property_string( GlobalTextureBrowser().m_mouseWheelScrollIncrement ) );
        GlobalPreferenceSystem().registerPreference( "SI_Colors0", make_property_string( GlobalTextureBrowser().color_textureback ) );
+       GlobalPreferenceSystem().registerPreference( "HideNonShadersInCommon", make_property_string( GlobalTextureBrowser().m_hideNonShadersInCommon ) );
 
        g_TextureBrowser.shader = texdef_name_default();