[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: [PATCH] final fix for textview probs
From: Michael Brade <Michael.Brade () informatik ! uni-muenchen ! de>
Date: 2001-08-01 8:14:53
[Download RAW message or body]
Hi!
This night I thought about the problem again and came to the following
conclusion:
The current behaviour of the textview to only change the current item if
the focus change happens between the parts in one specific Konqywindow is
inconsistent. Furthermore this led to the problems described in #29530 and
would result in a workaround (aka evil hacks) for mouseselections.
To fix those bugs and make AleXXX happy at the same time ;) I just changed
the paintFocus method for the textview items. Like this we have now the
visible focus change without the need to really select an item and can even
save some code-duplication in the textviewwidget. The behaviour of all
listviews is now exactly the same and consistent all over the place, only the
look&feel is different.
If nobody (especially Alex) objects I'll commit at about 15:00 CEST because
I'll have to leave for about 6 days then. And then I can only pray that this
change still makes it into KDE 2.2....
Ciao,
Michael
--
Some operating systems are called `user friendly',
Linux however is `expert friendly'.
["diff.listview" (text/x-diff)]
? diff.listview
Index: konq_listviewwidget.cc
===================================================================
RCS file: /home/kde/kdebase/konqueror/listview/konq_listviewwidget.cc,v
retrieving revision 1.166
diff -u -p -r1.166 konq_listviewwidget.cc
--- konq_listviewwidget.cc 2001/07/31 08:33:22 1.166
+++ konq_listviewwidget.cc 2001/08/01 07:57:26
@@ -925,7 +925,7 @@ void KonqBaseListViewWidget::setComplete
kdDebug() << "going to first item" << endl;
setCurrentItem(firstChild());
ensureItemVisible(firstChild());
- //selectCurrentItemAndEnableSelectedBySimpleMoveMode();
+ selectCurrentItemAndEnableSelectedBySimpleMoveMode();
} else
setContentsPos( m_xOffset, m_yOffset );
@@ -992,7 +992,7 @@ void KonqBaseListViewWidget::slotNewItem
setCurrentItem(tmp);
ensureItemVisible(tmp);
emit selectionChanged();
- //selectCurrentItemAndEnableSelectedBySimpleMoveMode();
+ selectCurrentItemAndEnableSelectedBySimpleMoveMode();
m_itemFound=true;
};
if ( !(*kit)->isMimeTypeKnown() )
Index: konq_textviewitem.cc
===================================================================
RCS file: /home/kde/kdebase/konqueror/listview/konq_textviewitem.cc,v
retrieving revision 1.20
diff -u -p -r1.20 konq_textviewitem.cc
--- konq_textviewitem.cc 2001/06/11 02:53:31 1.20
+++ konq_textviewitem.cc 2001/08/01 07:57:26
@@ -22,6 +22,9 @@
#include "konq_listview.h"
#include "konq_settings.h"
+#include <qpixmap.h>
+#include <qimage.h>
+#include <kimageeffect.h>
#include <kio/global.h>
#include <assert.h>
#include <stdio.h>
@@ -201,6 +204,18 @@ void KonqTextViewItem::paintCell( QPaint
cg.setColor(QColorGroup::Highlight, Qt::darkGray);
KListViewItem::paintCell( _painter, cg, _column, _width, _alignment );
+}
+
+void KonqTextViewItem::paintFocus( QPainter *_p, const QColorGroup &_cg, const QRect \
&_r ) +{
+ listView()->style().drawFocusRect( _p, _r, _cg,
+ isSelected() ? &_cg.highlight() : &_cg.base(), isSelected() );
+
+ QPixmap pix( _r.width(), _r.height() );
+ bitBlt( &pix, 0, 0, _p->device(), _r.left(), _r.top(), _r.width(), _r.height() );
+ QImage im = pix.convertToImage();
+ im = KImageEffect::fade( im, 0.25, Qt::black );
+ _p->drawImage( _r.topLeft(), im );
}
void KonqTextViewItem::setup()
Index: konq_textviewitem.h
===================================================================
RCS file: /home/kde/kdebase/konqueror/listview/konq_textviewitem.h,v
retrieving revision 1.5
diff -u -p -r1.5 konq_textviewitem.h
--- konq_textviewitem.h 2000/12/04 14:51:08 1.5
+++ konq_textviewitem.h 2001/08/01 07:57:26
@@ -57,6 +57,7 @@ class KonqTextViewItem : public KonqBase
/** Call this before destroying the text view (decreases reference count
* on the view)*/
virtual void paintCell( QPainter *_painter, const QColorGroup & _cg, int \
_column, int _width, int _alignment ); + virtual void paintFocus( QPainter \
*_painter, const QColorGroup & _cg, const QRect & r ); virtual void \
updateContents();
protected:
Index: konq_textviewwidget.cc
===================================================================
RCS file: /home/kde/kdebase/konqueror/listview/konq_textviewwidget.cc,v
retrieving revision 1.31
diff -u -p -r1.31 konq_textviewwidget.cc
--- konq_textviewwidget.cc 2001/05/20 12:38:58 1.31
+++ konq_textviewwidget.cc 2001/08/01 07:57:27
@@ -177,45 +177,6 @@ void KonqTextViewWidget::slotNewItems( c
}
}
-void KonqTextViewWidget::setComplete()
-{
- m_bTopLevelComplete = true;
-
- // Alex: this flag is set when we are just finishing a voluntary listing,
- // so do the go-to-item thing only under here. When we update the
- // current directory automatically (e.g. after a file has been deleted),
- // we don't want to go to the first item ! (David)
- if ( m_bUpdateContentsPosAfterListing )
- {
- kdDebug() << "KonqTextViewWidget::setComplete \
m_bUpdateContentsPosAfterListing=true" << endl;
- m_bUpdateContentsPosAfterListing = false;
-
- setContentsPos( m_pBrowserView->extension()->urlArgs().xOffset,
- m_pBrowserView->extension()->urlArgs().yOffset );
-
- if ((m_goToFirstItem==true) || (m_itemFound==false))
- {
- kdDebug() << "going to first item" << endl;
- setCurrentItem(firstChild());
- selectCurrentItemAndEnableSelectedBySimpleMoveMode();
- }
- ensureItemVisible(currentItem());
- }
- // Show "cut" icons as such
- m_pBrowserView->slotClipboardDataChanged();
- // Show totals
- slotOnViewport();
-
- if ( !isUpdatesEnabled() || !viewport()->isUpdatesEnabled() )
- {
- viewport()->setUpdatesEnabled( true );
- setUpdatesEnabled( true );
- triggerUpdate();
- }
-}
-
-
-
bool KonqTextViewWidget::isNameColumn(const QPoint& point )
{
if (!itemAt( point ) )
@@ -266,9 +227,11 @@ void KonqTextViewWidget::viewportDragMov
void KonqTextViewWidget::viewportDropEvent( QDropEvent *ev )
{
- kdDebug() << "KonqBaseListViewWidget::viewportDropEvent" << endl;
- if ( m_dragOverItem != 0L )
- setSelected( m_dragOverItem, false );
+ if ( m_dirLister->url().isEmpty() )
+ return;
+ kdDebug() << "KonqTextViewWidget::viewportDropEvent" << endl;
+ if ( m_dragOverItem != 0L )
+ setSelected( m_dragOverItem, false );
m_dragOverItem = 0L;
ev->accept();
Index: konq_textviewwidget.h
===================================================================
RCS file: /home/kde/kdebase/konqueror/listview/konq_textviewwidget.h,v
retrieving revision 1.11
diff -u -p -r1.11 konq_textviewwidget.h
--- konq_textviewwidget.h 2001/03/27 16:02:22 1.11
+++ konq_textviewwidget.h 2001/08/01 07:57:27
@@ -41,7 +41,6 @@ class KonqTextViewWidget : public KonqBa
protected slots:
// slots connected to the directory lister
- virtual void setComplete();
virtual void slotNewItems( const KFileItemList & );
protected:
bool isNameColumn(const QPoint& point );
["diff.kdeui" (text/x-diff)]
? diff
? xmlgui.diff2
? xmlgui.diff
? diff.kdeui
Index: klistview.cpp
===================================================================
RCS file: /home/kde/kdelibs/kdeui/klistview.cpp,v
retrieving revision 1.149
diff -u -p -r1.149 klistview.cpp
--- klistview.cpp 2001/07/31 23:58:56 1.149
+++ klistview.cpp 2001/08/01 07:54:33
@@ -496,21 +496,11 @@ void KListView::emitExecute( QListViewIt
}
}
+//### KDE 3: remove
void KListView::focusInEvent( QFocusEvent *fe )
{
// kdDebug()<<"KListView::focusInEvent()"<<endl;
QListView::focusInEvent( fe );
-
- if ((d->selectedBySimpleMove)
- && (d->selectionMode == Konqueror)
- && (fe->reason()!=QFocusEvent::Popup)
- && (fe->reason()!=QFocusEvent::ActiveWindow)
- && (currentItem()!=0))
- {
- currentItem()->setSelected(true);
- currentItem()->repaint();
- emit selectionChanged();
- };
}
void KListView::focusOutEvent( QFocusEvent *fe )
@@ -518,19 +508,6 @@ void KListView::focusOutEvent( QFocusEve
cleanDropVisualizer();
cleanItemHighlighter();
- d->autoSelect.stop();
-
- if ((d->selectedBySimpleMove)
- && (d->selectionMode == Konqueror)
- && (fe->reason()!=QFocusEvent::Popup)
- && (fe->reason()!=QFocusEvent::ActiveWindow)
- && (currentItem()!=0))
- {
- currentItem()->setSelected(false);
- currentItem()->repaint();
- emit selectionChanged();
- };
-
QListView::focusOutEvent( fe );
}
@@ -1170,16 +1147,11 @@ void KListView::keyPressEvent (QKeyEvent
}
//this one is only called in konq_listviewwidget, aleXXX
+//### KDE 3: rename this as it doesn't select the current item anymore
void KListView::selectCurrentItemAndEnableSelectedBySimpleMoveMode()
{
d->selectedBySimpleMove=true;
- if (currentItem()!=0)
- {
- currentItem()->setSelected(true);
- currentItem()->repaint();
- emit selectionChanged();
- };
-};
+}
void KListView::konquerorKeyPressEvent (QKeyEvent* e)
{
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic