support single quote for PreviewHtml

This commit is contained in:
lsv 2026-03-04 15:34:39 +05:00
parent 613c392361
commit 9571d4527a
2 changed files with 22 additions and 3 deletions

View file

@ -193,6 +193,23 @@ public:
if (event.GetKeyCode() == WXK_HOME) htmlWindow->ScrollPages(-1000);
if (event.GetKeyCode() == WXK_END) htmlWindow->ScrollPages(1000);
//std::cout << "key code " << event.GetKeyCode() << " " << std::endl;
if (event.GetKeyCode() == 'C') {
if (hist.size()>0 && wxTheClipboard->Open())
{
wxString h=hist[hist.size()-1];
// Добавляем данные (можно добавить несколько форматов, если нужно)
wxDataObjectComposite* dataobj = new wxDataObjectComposite();
dataobj->Add(new wxHTMLDataObject(h));
wxTheClipboard->SetData(dataobj);
wxTheClipboard->Close();
}
else
{
wxLogError("No open clipboard.");
}
}
if (event.GetKeyCode() == 'S') {
wxSize clientSize = this->GetClientSize();
// Создаём битмап того же размера

View file

@ -117,7 +117,7 @@ wxString PreviewHtml::Preview(const wxString& txt, fmtpreview type) {
int flag = 0;
tokens.clear();
bool quote = false;
wxUniChar prevchar;
wxUniChar prevchar,quotechar;
int startstr = -1;
while (pos < len) {
c = tmpstr[pos++];
@ -130,18 +130,20 @@ wxString PreviewHtml::Preview(const wxString& txt, fmtpreview type) {
html+=c;
continue;
}
bool isquote = c == '"';
if (!quote && (c=='"' || c=='\'')) quotechar = c;
bool isquote = c == quotechar;
if (quote) {
if (prevchar == c && isquote) {
// repeat quote
prevchar = '\0';
continue;
}
if (prevchar == '"' && !isquote) {
if (prevchar == quotechar && !isquote) {
// end quote string
wxString tmp = tmpstr.Mid(startstr, pos - startstr - 1);
saveTokenIfNotEmpty(tmp, PREVIEW_QUOTE);
quote = false;
quotechar='\0';
}
else {
prevchar = c;