]> git.lyx.org Git - lyx.git/commitdiff
Embedding: for safety, update before changing embedding status
authorBo Peng <bpeng@lyx.org>
Tue, 11 Sep 2007 16:00:16 +0000 (16:00 +0000)
committerBo Peng <bpeng@lyx.org>
Tue, 11 Sep 2007 16:00:16 +0000 (16:00 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20213 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/controllers/ControlEmbeddedFiles.cpp
src/frontends/controllers/ControlEmbeddedFiles.h
src/frontends/qt4/GuiEmbeddedFiles.cpp

index d1a718d16be973ab8ce3b646d983d7eba95ed96b..41fb78630268a533b84082728d52b5cfa660d45b 100644 (file)
@@ -81,14 +81,15 @@ void ControlEmbeddedFiles::view(EmbeddedFile const & item)
 }
 
 
-void ControlEmbeddedFiles::setEmbed(EmbeddedFile & item, bool embed)
+void ControlEmbeddedFiles::setEmbed(EmbeddedFile & item, bool embed, bool update)
 {
-       // FIXME: updateFromExternalFile() or extract() may fail...
-       if (embed)
-               item.updateFromExternalFile(&buffer());
-       else
-               item.extract(&buffer());
        item.setEmbed(embed);
+       if (update) {
+               if (embed)
+                       item.updateFromExternalFile(&buffer());
+               else
+                       item.extract(&buffer());
+       }
 }
 
 
index 79d0885a3bcb79fee6512356871871d4facd1baf..ef824e76958b1df1a6e8ed5c7978baa73e136434 100644 (file)
@@ -48,7 +48,7 @@ public:
        ///
        void view(EmbeddedFile const & item);
        ///
-       void setEmbed(EmbeddedFile & item, bool embed);
+       void setEmbed(EmbeddedFile & item, bool embed, bool update);
        ///
        docstring const browseFile();
        ///
index fbe1b1eab5d17c6ec5fb0f7612fdceaa9717d04c..be720a7023577a81f7753b3742a4f1cd4c95ecbf 100644 (file)
@@ -37,12 +37,16 @@ void GuiEmbeddedFilesDialog::on_filesLW_itemChanged(QListWidgetItem* item)
        if (item->checkState() == Qt::Checked) {
                if (files[filesLW->row(item)].embedded())
                        return;
-               controller_.setEmbed(files[filesLW->row(item)], true);
+               // this should not be needed after EmbeddedFiles are updated correctly.
+               files.update();
+               controller_.setEmbed(files[filesLW->row(item)], true, files.enabled());
                controller_.dispatchMessage("Embed file " + fromqstr(item->text()));
        } else {
                if (!files[filesLW->row(item)].embedded())
                        return;
-               controller_.setEmbed(files[filesLW->row(item)], false);
+               // this should not be needed after EmbeddedFiles are updated correctly.
+               files.update();
+               controller_.setEmbed(files[filesLW->row(item)], false, files.enabled());
                controller_.dispatchMessage("Stop embedding file " + fromqstr(item->text()));
        }
 }
@@ -138,11 +142,13 @@ void GuiEmbeddedFilesDialog::updateView()
 void GuiEmbeddedFilesDialog::on_selectPB_clicked()
 {
        EmbeddedFiles & files = controller_.embeddedFiles();
+       // this should not be needed after EmbeddedFiles are updated correctly.
+       files.update();
        QList<QListWidgetItem *> selection = filesLW->selectedItems();
        for (QList<QListWidgetItem*>::iterator it = selection.begin(); 
                it != selection.end(); ++it) {
                (*it)->setCheckState(Qt::Checked);
-               controller_.setEmbed(files[filesLW->row(*it)], true);
+               controller_.setEmbed(files[filesLW->row(*it)], true, files.enabled());
        }
        controller_.dispatchMessage("Embedding files");
 }
@@ -151,11 +157,13 @@ void GuiEmbeddedFilesDialog::on_selectPB_clicked()
 void GuiEmbeddedFilesDialog::on_unselectPB_clicked()
 {
        EmbeddedFiles & files = controller_.embeddedFiles();
+       // this should not be needed after EmbeddedFiles are updated correctly.
+       files.update();
        QList<QListWidgetItem *> selection = filesLW->selectedItems();
        for (QList<QListWidgetItem*>::iterator it = selection.begin(); 
                it != selection.end(); ++it) {
                (*it)->setCheckState(Qt::Checked);
-               controller_.setEmbed(files[filesLW->row(*it)], false);
+               controller_.setEmbed(files[filesLW->row(*it)], false, files.enabled());
        }
        controller_.dispatchMessage("Stop embedding files");
 }