From c12dc2feef5ec7be6ab28a927397e944e053e000 Mon Sep 17 00:00:00 2001 From: Scott Kostyshak Date: Fri, 8 May 2015 23:26:57 -0400 Subject: [PATCH] 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". --- src/Text3.cpp | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/Text3.cpp b/src/Text3.cpp index 3d73e1ef66..5c9b812ef5 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: -- 2.39.2