]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetgraphics.C
The speed patch: redraw only rows that have changed
[lyx.git] / src / insets / insetgraphics.C
index 72139e5bab3b7e6b57aa8c7731c00c5941d08673..44a37fd723496af1c9d4f2acaa2690984183e62f 100644 (file)
@@ -518,7 +518,7 @@ copyToDirIfNeeded(string const & file_in, string const & dir, bool zipped)
 }
 
 
-string const stripExtension(string const & file)
+string const stripExtensionIfPossible(string const & file)
 {
        // Remove the extension so the LaTeX will use whatever
        // is appropriate (when there are several versions in
@@ -526,7 +526,15 @@ string const stripExtension(string const & file)
        // This works only if the filename contains no dots besides
        // the just removed one. We can fool here by replacing all
        // dots with a macro whose definition is just a dot ;-)
-       return subst(RemoveExtension(file), ".", "\\lyxdot ");
+       // The automatic format selection does not work if the file
+       // name is escaped.
+       string const latex_name = latex_path(file,
+                                            lyx::support::EXCLUDE_EXTENSION);
+       if (contains(latex_name, '"'))
+               return latex_name;
+       return latex_path(RemoveExtension(file),
+                         lyx::support::PROTECT_EXTENSION,
+                         lyx::support::ESCAPE_DOTS);
 }
 
 
@@ -540,8 +548,8 @@ string const stripExtensionIfPossible(string const & file, string const & to)
        if (to_format == file_format ||
            (to_format == "eps" && file_format ==  "ps") ||
            (to_format ==  "ps" && file_format == "eps"))
-               return stripExtension(file);
-       return file;
+               return stripExtensionIfPossible(file);
+       return latex_path(file, lyx::support::EXCLUDE_EXTENSION);
 }
 
 } // namespace anon
@@ -628,7 +636,8 @@ string const InsetGraphics::prepareFile(Buffer const & buf,
                                        source_file, output_file);
                        // We can't strip the extension, because we don't know
                        // the unzipped file format
-                       return output_file;
+                       return latex_path(output_file,
+                                         lyx::support::EXCLUDE_EXTENSION);
                }
 
                string const unzipped_temp_file = unzippedFileName(temp_file);
@@ -688,7 +697,7 @@ string const InsetGraphics::prepareFile(Buffer const & buf,
                                                      output_to_file);
                runparams.exportdata->addExternalFile("dvi", to_file,
                                                      output_to_file);
-               return stripExtension(output_file);
+               return stripExtensionIfPossible(output_file);
        }
 
        lyxerr[Debug::GRAPHICS]
@@ -704,7 +713,7 @@ string const InsetGraphics::prepareFile(Buffer const & buf,
                                to_file, output_to_file);
        }
 
-       return stripExtension(output_file);
+       return stripExtensionIfPossible(output_file);
 }
 
 
@@ -760,7 +769,7 @@ int InsetGraphics::latex(Buffer const & buf, ostream & os,
        // Convert the file if necessary.
        // Remove the extension so LaTeX will use whatever is appropriate
        // (when there are several versions in different formats)
-       latex_str += latex_path(prepareFile(buf, runparams));
+       latex_str += prepareFile(buf, runparams);
        latex_str += '}' + after;
        os << latex_str;
 
@@ -863,7 +872,7 @@ void InsetGraphics::validate(LaTeXFeatures & features) const
                return;
 
        features.includeFile(graphic_label,
-                            RemoveExtension(params().filename.absFilename()));
+                            RemoveExtension(params().filename.absFilename()));
 
        features.require("graphicx");