From 5d331d450a4dddeef3d3b828ba5f32dbb99dbecc Mon Sep 17 00:00:00 2001
From: Michele Calgaro <michele.calgaro@yahoo.it>
Date: Fri, 17 Jul 2015 15:52:46 +0900
Subject: Added new functionality to Konqueror. Double clicking on an empty
 area in the listview or iconview widget will navigate to the parent folder.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
---
 doc/konqueror/filemanager.docbook         |  4 ++--
 konqueror/iconview/konq_iconview.cc       | 16 ++++++++++++++++
 konqueror/iconview/konq_iconview.h        |  1 +
 konqueror/listview/konq_listviewwidget.cc | 26 ++++++++++++++++++++++++++
 konqueror/listview/konq_listviewwidget.h  |  1 +
 5 files changed, 46 insertions(+), 2 deletions(-)

diff --git a/doc/konqueror/filemanager.docbook b/doc/konqueror/filemanager.docbook
index a1ef9eb4f..ee73d7963 100644
--- a/doc/konqueror/filemanager.docbook
+++ b/doc/konqueror/filemanager.docbook
@@ -176,9 +176,9 @@ tree:</para>
 icon  -- mdash; or if you have already <quote>selected</quote> it (see below)  -- mdash; then just press
 <keycap>Enter</keycap>.</para></listitem>
 <listitem><para>To go up the folder tree you can click on the <guiicon>Up
-</guiicon> button in the Toolbar, use<keycombo action="simul">&Alt;<keysym>Up Arrow</keysym></keycombo>, or use the Menubar
+</guiicon> button in the Toolbar, use <keycombo action="simul">&Alt;<keysym>Up Arrow</keysym></keycombo>, use the Menubar
 <menuchoice><guimenu>Go</guimenu><guimenuitem>Up</guimenuitem></menuchoice>
-option.</para></listitem>
+option or just double click with the &LMB; on an empty area, i.e. not over an item name.</para></listitem>
 </itemizedlist>
 
 <para>To <quote>select</quote> a file or folder in the displayed folder
diff --git a/konqueror/iconview/konq_iconview.cc b/konqueror/iconview/konq_iconview.cc
index d90fe5290..595c02948 100644
--- a/konqueror/iconview/konq_iconview.cc
+++ b/konqueror/iconview/konq_iconview.cc
@@ -348,6 +348,8 @@ KonqKfmIconView::KonqKfmIconView( TQWidget *parentWidget, TQObject *parent, cons
              this, TQT_SLOT( slotMouseButtonClicked(int, TQIconViewItem*, const TQPoint&)) );
     connect( m_pIconView, TQT_SIGNAL( contextMenuRequested(TQIconViewItem*, const TQPoint&)),
              this, TQT_SLOT( slotContextMenuRequested(TQIconViewItem*, const TQPoint&)) );
+    connect( m_pIconView, TQT_SIGNAL( mouseDoubleClicked(TQIconViewItem*)),
+             this, TQT_SLOT( slotDoubleClicked(TQIconViewItem*)) );
 
     // Signals needed to implement the spring loading folders behavior
     connect( m_pIconView, TQT_SIGNAL( held( TQIconViewItem * ) ),
@@ -861,6 +863,20 @@ void KonqKfmIconView::slotMouseButtonClicked(int _button, TQIconViewItem* _item,
         mmbClicked( _item ? static_cast<KFileIVI*>(_item)->item() : 0L );
 }
 
+void KonqKfmIconView::slotDoubleClicked(TQIconViewItem *_item)
+{ 
+    if (!_item)
+    {
+        KParts::URLArgs args;
+        args.trustedSource = true;
+        KURL upURL = m_dirLister->url().upURL();
+        if (!upURL.isEmpty())
+	{  
+	m_extension->openURLRequest(upURL, args);
+	}
+    }
+}
+  
 void KonqKfmIconView::slotStarted()
 {
     // Only emit started if this comes after openURL, i.e. it's not for an update.
diff --git a/konqueror/iconview/konq_iconview.h b/konqueror/iconview/konq_iconview.h
index 5a5f0a1ac..5c1584efc 100644
--- a/konqueror/iconview/konq_iconview.h
+++ b/konqueror/iconview/konq_iconview.h
@@ -97,6 +97,7 @@ protected slots:
   void slotReturnPressed( TQIconViewItem *item );
   void slotMouseButtonPressed(int, TQIconViewItem*, const TQPoint&);
   void slotMouseButtonClicked(int, TQIconViewItem*, const TQPoint&);
+  void slotDoubleClicked(TQIconViewItem*);
   void slotContextMenuRequested(TQIconViewItem*, const TQPoint&);
   void slotOnItem( TQIconViewItem *item );
   void slotOnViewport();
diff --git a/konqueror/listview/konq_listviewwidget.cc b/konqueror/listview/konq_listviewwidget.cc
index ad7ada2c4..b7dd24c4b 100644
--- a/konqueror/listview/konq_listviewwidget.cc
+++ b/konqueror/listview/konq_listviewwidget.cc
@@ -522,6 +522,32 @@ void KonqBaseListViewWidget::contentsWheelEvent( TQWheelEvent *e )
    TDEListView::contentsWheelEvent( e );
 }
 
+void KonqBaseListViewWidget::contentsMouseDoubleClickEvent(TQMouseEvent *e)
+{
+	if (m_rubber) {
+		TQRect r(m_rubber->normalize());
+		delete m_rubber;
+		m_rubber = NULL;
+		repaintContents(r, false);
+	}
+		
+	TQPoint vp = contentsToViewport(e->pos());
+	KonqBaseListViewItem* item = isExecuteArea(vp) ?
+		static_cast<KonqBaseListViewItem*>(itemAt(vp)) : NULL;
+
+	if (item)	{
+    TDEListView::contentsMouseDoubleClickEvent(e);
+	}
+	else {
+    KParts::URLArgs args;
+    args.trustedSource = true;
+    KURL upURL = m_dirLister->url().upURL();
+    if (!upURL.isEmpty()) {  
+	    m_pBrowserView->extension()->openURLRequest(upURL, args);
+	  }
+	}
+}
+
 void KonqBaseListViewWidget::leaveEvent( TQEvent *e )
 {
    if ( m_activeItem != 0 )
diff --git a/konqueror/listview/konq_listviewwidget.h b/konqueror/listview/konq_listviewwidget.h
index ae79e5c03..613f012b3 100644
--- a/konqueror/listview/konq_listviewwidget.h
+++ b/konqueror/listview/konq_listviewwidget.h
@@ -214,6 +214,7 @@ protected:
    virtual void contentsMouseReleaseEvent( TQMouseEvent *e );
    virtual void contentsMouseMoveEvent( TQMouseEvent *e );
    virtual void contentsWheelEvent( TQWheelEvent * e );
+   virtual void contentsMouseDoubleClickEvent( TQMouseEvent *e );
 
    virtual void leaveEvent( TQEvent *e );
 
-- 
cgit v1.2.3

