summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sfx2/inc/recentdocsview.hxx2
-rw-r--r--sfx2/source/control/recentdocsview.cxx13
-rw-r--r--sfx2/source/dialog/backingwindow.cxx3
-rw-r--r--sfx2/uiconfig/ui/startcenter.ui7
4 files changed, 25 insertions, 0 deletions
diff --git a/sfx2/inc/recentdocsview.hxx b/sfx2/inc/recentdocsview.hxx
index 3ee34eabc41a..44165afbe38a 100644
--- a/sfx2/inc/recentdocsview.hxx
+++ b/sfx2/inc/recentdocsview.hxx
@@ -80,6 +80,8 @@ public:
// received on load of recently used file
void DispatchedLoadRecentUsedFile();
+ void clearUnavailableFiles();
+
private:
virtual bool MouseButtonDown( const MouseEvent& rMEvt ) override;
diff --git a/sfx2/source/control/recentdocsview.cxx b/sfx2/source/control/recentdocsview.cxx
index 9eea0e1c2488..61b9b55a64a6 100644
--- a/sfx2/source/control/recentdocsview.cxx
+++ b/sfx2/source/control/recentdocsview.cxx
@@ -18,6 +18,7 @@
*/
#include <sal/log.hxx>
+#include <comphelper/DirectoryHelper.hxx>
#include <recentdocsview.hxx>
#include <sfx2/sfxresid.hxx>
#include <unotools/historyoptions.hxx>
@@ -173,6 +174,18 @@ void RecentDocsView::Reload()
Invalidate();
}
+void RecentDocsView::clearUnavailableFiles(){
+ std::vector< SvtHistoryOptions::HistoryItem > aHistoryList = SvtHistoryOptions::GetList( EHistoryType::PickList );
+ for ( size_t i = 0; i < aHistoryList.size(); i++ )
+ {
+ const SvtHistoryOptions::HistoryItem& rPickListEntry = aHistoryList[i];
+ if ( !comphelper::DirectoryHelper::fileExists(rPickListEntry.sURL) ){
+ SvtHistoryOptions::DeleteItem(EHistoryType::PickList,rPickListEntry.sURL);
+ }
+ }
+ Reload();
+}
+
bool RecentDocsView::MouseButtonDown( const MouseEvent& rMEvt )
{
if (rMEvt.IsLeft())
diff --git a/sfx2/source/dialog/backingwindow.cxx b/sfx2/source/dialog/backingwindow.cxx
index 163c5c298e4f..6b68370b0bae 100644
--- a/sfx2/source/dialog/backingwindow.cxx
+++ b/sfx2/source/dialog/backingwindow.cxx
@@ -603,6 +603,9 @@ IMPL_LINK (BackingWindow, MenuSelectHdl, const OString&, rId, void)
mxAllRecentThumbnails->Reload();
return;
}
+ else if(rId == "clear_unavailable"){
+ mxAllRecentThumbnails->clearUnavailableFiles();
+ }
else if (!rId.isEmpty())
{
initializeLocalView();
diff --git a/sfx2/uiconfig/ui/startcenter.ui b/sfx2/uiconfig/ui/startcenter.ui
index e65eba9e9aba..89b4653dffa7 100644
--- a/sfx2/uiconfig/ui/startcenter.ui
+++ b/sfx2/uiconfig/ui/startcenter.ui
@@ -17,6 +17,13 @@
<property name="label" translatable="yes" context="startcenter|clear_all">Clear Recent Documents</property>
</object>
</child>
+ <child>
+ <object class="GtkMenuItem" id="clear_unavailable">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes" context="startcenter|clear_unavailable">Clear Unavailable Files</property>
+ </object>
+ </child>
</object>
<object class="GtkImage" id="database_all_image">
<property name="visible">True</property>