diff --git a/qrenderdoc/Code/Interface/PersistantConfig.h b/qrenderdoc/Code/Interface/PersistantConfig.h index 3fae31eb5..ec36f581e 100644 --- a/qrenderdoc/Code/Interface/PersistantConfig.h +++ b/qrenderdoc/Code/Interface/PersistantConfig.h @@ -521,8 +521,8 @@ DECLARE_REFLECTION_STRUCT(BugReport); rdcdatetime(2015, 01, 01)) \ \ DOCUMENT( \ - "``True`` if when coloring marker regions in the :class:`EventBrowser`, the whole row " \ - "should be colored instead of just a side-bar.\n" \ + "``True`` if the UI should be allowed to make update checks remotely to see if a new " \ + "version is available.\n" \ "\n" \ "Defaults to ``True``."); \ CONFIG_SETTING_VAL(public, bool, bool, CheckUpdate_AllowChecks, true) \ diff --git a/qrenderdoc/Code/pyrenderdoc/interface_check.h b/qrenderdoc/Code/pyrenderdoc/interface_check.h index 99e6911cf..2e6bb8179 100644 --- a/qrenderdoc/Code/pyrenderdoc/interface_check.h +++ b/qrenderdoc/Code/pyrenderdoc/interface_check.h @@ -125,7 +125,7 @@ inline bool check_interface(rdcstr &log, swig_type_info **swig_types, size_t num // the end of the world. bool errors_found = false; - std::set docstrings; + std::set struct_docstrings; for(size_t i = 0; i < numTypes; i++) { SwigPyClientData *typeinfo = (SwigPyClientData *)swig_types[i]->clientdata; @@ -138,7 +138,7 @@ inline bool check_interface(rdcstr &log, swig_type_info **swig_types, size_t num rdcstr typedoc = typeobj->tp_doc; - auto result = docstrings.insert(typedoc); + auto result = struct_docstrings.insert(typedoc); if(!result.second) { @@ -278,6 +278,7 @@ inline bool check_interface(rdcstr &log, swig_type_info **swig_types, size_t num PyMethodDef *method = typeobj->tp_methods; + std::set method_docstrings; while(method->ml_doc) { rdcstr method_doc = method->ml_doc; @@ -297,7 +298,7 @@ inline bool check_interface(rdcstr &log, swig_type_info **swig_types, size_t num method_doc.erase(0, i); - result = docstrings.insert(method_doc); + result = method_docstrings.insert(method_doc); if(!result.second) { @@ -312,6 +313,26 @@ inline bool check_interface(rdcstr &log, swig_type_info **swig_types, size_t num method++; } + + PyGetSetDef *getset = typeobj->tp_getset; + while(getset && getset->doc) + { + rdcstr getset_doc = getset->doc; + + result = method_docstrings.insert(getset_doc); + + if(!result.second) + { + snprintf( + convert_error, sizeof(convert_error) - 1, + "Duplicate docstring '%s' found on getset '%s.%s' - are you missing a DOCUMENT()?\n", + getset_doc.c_str(), typeobj->tp_name, getset->name); + log += convert_error; + errors_found = true; + } + + getset++; + } } return errors_found;