commit c12dc2feef5ec7be6ab28a927397e944e053e000
Author: Scott Kostyshak <[email protected]>
Date: Fri May 8 23:26:57 2015 -0400
Fix pasting of PDF from clipboard
The command "paste pdf" was always disabled because the
condition in the following "if" statement always returns false
if (arg == "pdf" && (type = Clipboard::PdfGraphicsType))
The value of "type" is zero in this case because PdfGraphicsType is
the first enum value (and it is not set explicitly to non-zero).
An alternative patch is to put AnyGraphicsType as the first
element of enum GraphicsType, or to set the first element to a
number greater than 0.
To test the bug that this commit fixes, either copy a PDF and try to
paste with the action "paste pdf", or click on the "Edit" menu and
notice (before this commit) the terminal output "Unrecognized
graphics type: pdf".
diff --git a/src/Text3.cpp b/src/Text3.cpp
index 3d73e1e..5c9b812 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -2959,25 +2959,30 @@ bool Text::getStatus(Cursor & cur, FuncRequest const &
cmd,
break;
}
- // explicit graphics type?
Clipboard::GraphicsType type = Clipboard::AnyGraphicsType;
- if ((arg == "pdf" && (type = Clipboard::PdfGraphicsType))
- || (arg == "png" && (type =
Clipboard::PngGraphicsType))
- || (arg == "jpeg" && (type =
Clipboard::JpegGraphicsType))
- || (arg == "linkback" && (type =
Clipboard::LinkBackGraphicsType))
- || (arg == "emf" && (type =
Clipboard::EmfGraphicsType))
- || (arg == "wmf" && (type =
Clipboard::WmfGraphicsType))) {
- enable = theClipboard().hasGraphicsContents(type);
+ if (arg == "pdf")
+ type = Clipboard::PdfGraphicsType;
+ else if (arg == "png")
+ type = Clipboard::PngGraphicsType;
+ else if (arg == "jpeg")
+ type = Clipboard::JpegGraphicsType;
+ else if (arg == "linkback")
+ type = Clipboard::LinkBackGraphicsType;
+ else if (arg == "emf")
+ type = Clipboard::EmfGraphicsType;
+ else if (arg == "wmf")
+ type = Clipboard::WmfGraphicsType;
+ else {
+ // unknown argument
+ LYXERR0("Unrecognized graphics type: " << arg);
+ // we don't want to assert if the user just mistyped
the LFUN
+ LATTEST(cmd.origin() != FuncRequest::INTERNAL);
+ enable = false;
break;
}
-
- // unknown argument
- LYXERR0("Unrecognized graphics type: " << arg);
- // we don't want to assert if the user just mistyped the LFUN
- LATTEST(cmd.origin() != FuncRequest::INTERNAL);
- enable = false;
+ enable = theClipboard().hasGraphicsContents(type);
break;
- }
+ }
case LFUN_CLIPBOARD_PASTE:
case LFUN_CLIPBOARD_PASTE_SIMPLE: