diff --git a/dtool/src/prc/configVariableCore.cxx b/dtool/src/prc/configVariableCore.cxx index 136d69f296..b323fa0c76 100644 --- a/dtool/src/prc/configVariableCore.cxx +++ b/dtool/src/prc/configVariableCore.cxx @@ -118,15 +118,26 @@ set_value_type(ConfigVariableCore::ValueType value_type) { // Description: Specifies the trust level of this variable. See // get_flags(). It is not an error to call this // multiple times, but if the value changes once -// get_declaration() has been called, a warning is printed. +// get_declaration() has been called, a warning is +// printed. //////////////////////////////////////////////////////////////////// void ConfigVariableCore:: set_flags(int flags) { - if (_value_queried && _flags != flags) { - prc_cat->warning() - << "changing trust level for ConfigVariable " - << get_name() << " from " << _flags << " to " - << flags << ".\n"; + if (_value_queried) { + int bits_changed = (_flags ^ flags); + if ((bits_changed & F_trust_level_mask) != 0) { + prc_cat->warning() + << "changing trust level for ConfigVariable " + << get_name() << " from " << (_flags & F_trust_level_mask) << " to " + << (flags & F_trust_level_mask) << ".\n"; + } + if ((bits_changed & ~(F_trust_level_mask | F_dconfig)) != 0) { + prc_cat->warning() + << "changing flags for ConfigVariable " + << get_name() << " from " << hex + << (_flags & ~F_trust_level_mask) << " to " + << (flags & ~F_trust_level_mask) << dec << ".\n"; + } } _flags = flags; @@ -153,6 +164,15 @@ set_description(const string &description) { // older DConfig interface. return; } + if (description == "DConfig") { + // As a similar exception, we don't replace an existing + // description with one that reads simply "DConfig", unless it + // was empty previously. + if (_description.empty()) { + _description = description; + } + return; + } prc_cat->warning() << "changing description for ConfigVariable "