 
     protected function exportAll (modifiedOnly :Boolean) :void {
         // if we have one or more combined export format, publish them
-        if (hasCombinedExportConfig()) exportCombined();
+        if (hasCombinedExportConfig()) {
+            var valid :Boolean = _flashDocsGrid.dataProvider.toArray()
+                .every(function (status :DocStatus,..._) :Boolean { return status.isValid; });
+            if (valid) exportCombined();
+        }
         // now publish any appropriate single formats
         if (hasSingleExportConfig()) {
             for each (var status :DocStatus in _flashDocsGrid.dataProvider.toArray()) {

        }
        _win.formatOverview.text = formatNames.join(", ");
        _win.exportAll.label = hasCombined ? "Export Combined" : "Export All";
        _win.exportModified.enabled = !hasCombined;
        _win.export.enabled = !hasCombined;


            var status :DocStatus = _flashDocsGrid.dataProvider[ii];
            status.updateModified(Ternary.of(pub == null || pub.modified(libs, ii)))
        }
    }

    protected function checkValid () :void {
        if (getLibs() == null) {
            _win.exportAll.enabled = false;
            return;
        }

        _win.exportAll.enabled = !hasCombinedExportConfig() || _flashDocsGrid.dataProvider.toArray()
            .every(function (status :DocStatus, ..._) :Boolean {
                return status.isValid;
            });
    }

    protected function setProjectDirty (val :Boolean) :void {
