Hello community,
here is the log from the commit of package yast2-qt
checked in at Wed Mar 5 21:56:17 CET 2008.
--------
--- yast2-qt/yast2-qt.changes 2008-02-27 15:12:05.000000000 +0100
+++ yast2-qt/yast2-qt.changes 2008-03-04 17:59:58.894521000 +0100
@@ -1,0 +2,7 @@
+Tue Mar 4 17:53:00 CET 2008 - sh@suse.de
+
+- Fixed segfault if SelectionBox value is set to nil (bnc #363251)
+- Fixed segfault if user clicks in empty area of a SelectionBox
+- V 2.16.32
+
+-------------------------------------------------------------------
Old:
----
yast2-qt-2.16.31.tar.bz2
New:
----
yast2-qt-2.16.32.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-qt.spec ++++++
--- /var/tmp/diff_new_pack.e13427/_old 2008-03-05 21:54:10.000000000 +0100
+++ /var/tmp/diff_new_pack.e13427/_new 2008-03-05 21:54:10.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package yast2-qt (Version 2.16.31)
+# spec file for package yast2-qt (Version 2.16.32)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -11,12 +11,12 @@
Name: yast2-qt
-Version: 2.16.31
+Version: 2.16.32
Release: 1
License: GPL v2 or later
Group: System/YaST
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-qt-2.16.31.tar.bz2
+Source0: yast2-qt-2.16.32.tar.bz2
BuildRequires: docbook-xsl-stylesheets
BuildRequires: doxygen
BuildRequires: libdrm-devel
@@ -111,6 +111,10 @@
%_includedir/*
%changelog
+* Tue Mar 04 2008 sh@suse.de
+- Fixed segfault if SelectionBox value is set to nil (bnc #363251)
+- Fixed segfault if user clicks in empty area of a SelectionBox
+- V 2.16.32
* Wed Feb 27 2008 sh@suse.de
- Removed obsolete Unicode fonts (now in separate pkg gnu-unifonts)
- V 2.16.31
++++++ yast2-qt-2.16.31.tar.bz2 -> yast2-qt-2.16.32.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.16.31/package/yast2-qt.changes new/yast2-qt-2.16.32/package/yast2-qt.changes
--- old/yast2-qt-2.16.31/package/yast2-qt.changes 2008-02-27 14:28:20.000000000 +0100
+++ new/yast2-qt-2.16.32/package/yast2-qt.changes 2008-03-04 17:55:22.000000000 +0100
@@ -1,4 +1,11 @@
-------------------------------------------------------------------
+Tue Mar 4 17:53:00 CET 2008 - sh@suse.de
+
+- Fixed segfault if SelectionBox value is set to nil (bnc #363251)
+- Fixed segfault if user clicks in empty area of a SelectionBox
+- V 2.16.32
+
+-------------------------------------------------------------------
Wed Feb 27 14:20:40 CET 2008 - sh@suse.de
- Removed obsolete Unicode fonts (now in separate pkg gnu-unifonts)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.16.31/src/YQSelectionBox.cc new/yast2-qt-2.16.32/src/YQSelectionBox.cc
--- old/yast2-qt-2.16.31/src/YQSelectionBox.cc 2008-02-27 14:28:20.000000000 +0100
+++ new/yast2-qt-2.16.32/src/YQSelectionBox.cc 2008-03-04 17:55:22.000000000 +0100
@@ -60,21 +60,21 @@
YUI_CHECK_NEW( _caption );
layout->addWidget( _caption );
- _qt_listBox = new QListWidget( this );
- YUI_CHECK_NEW( _qt_listBox );
- layout->addWidget( _qt_listBox );
-
- _qt_listBox->installEventFilter( this );
- //FIXME _qt_listBox->setVariableHeight( false );
- _qt_listBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding,
- QSizePolicy::Expanding ) );
- //FIXME _qt_listBox->setTopItem(0);
- _caption->setBuddy( _qt_listBox );
+ _qt_listWidget = new QListWidget( this );
+ YUI_CHECK_NEW( _qt_listWidget );
+ layout->addWidget( _qt_listWidget );
+
+ _qt_listWidget->installEventFilter( this );
+ //FIXME _qt_listWidget->setVariableHeight( false );
+ _qt_listWidget->setSizePolicy( QSizePolicy( QSizePolicy::Expanding,
+ QSizePolicy::Expanding ) );
+ //FIXME _qt_listWidget->setTopItem(0);
+ _caption->setBuddy( _qt_listWidget );
- connect( _qt_listBox, SIGNAL( itemSelectionChanged() ),
+ connect( _qt_listWidget, SIGNAL( itemSelectionChanged() ),
this, SLOT ( slotSelectionChanged() ) );
- connect( _qt_listBox, SIGNAL( itemDoubleClicked( QListWidgetItem * ) ),
+ connect( _qt_listWidget, SIGNAL( itemDoubleClicked( QListWidgetItem * ) ),
this, SLOT ( slotActivated( QListWidgetItem * ) ) );
connect( &_timer, SIGNAL( timeout() ),
@@ -111,30 +111,30 @@
if ( icon.isNull() )
{
- _qt_listBox->addItem( fromUTF8( item->label() ) );
+ _qt_listWidget->addItem( fromUTF8( item->label() ) );
}
else
{
- QListWidgetItem *i = new QListWidgetItem(_qt_listBox);
- i->setData(Qt::DisplayRole, fromUTF8( item->label() ) );
- i->setData(Qt::DecorationRole, icon );
- _qt_listBox->addItem( i );
+ QListWidgetItem *i = new QListWidgetItem( _qt_listWidget );
+ i->setData(Qt::DisplayRole, fromUTF8( item->label() ) );
+ i->setData(Qt::DecorationRole, icon );
+ _qt_listWidget->addItem( i );
}
if ( item->selected() )
{
- YQSignalBlocker sigBlocker( _qt_listBox );
- _qt_listBox->setCurrentItem( _qt_listBox->item( item->index() ) );
+ YQSignalBlocker sigBlocker( _qt_listWidget );
+ _qt_listWidget->setCurrentItem( _qt_listWidget->item( item->index() ) );
}
}
void YQSelectionBox::selectItem( YItem * item, bool selected )
{
- YQSignalBlocker sigBlocker( _qt_listBox );
+ YQSignalBlocker sigBlocker( _qt_listWidget );
YSelectionBox::selectItem( item, selected );
- _qt_listBox->setCurrentRow( selected ? item->index() : -1 );
+ _qt_listWidget->setCurrentRow( selected ? item->index() : -1 );
}
@@ -146,7 +146,7 @@
if ( item )
{
#ifdef VERBOSE_SELECTION
- yuiDebug() << this << ": Selecting item \"" << item->label() << "\"" << endl;
+ yuiDebug() << this << ": Selecting item \"" << item << "\"" << endl;
#endif
item->setSelected( true );
@@ -159,28 +159,32 @@
void YQSelectionBox::deselectAllItems()
{
YSelectionBox::deselectAllItems();
- _qt_listBox->clearSelection();
+ _qt_listWidget->clearSelection();
+ _qt_listWidget->setCurrentRow( -1 );
- if ( _qt_listBox->currentRow() > -1 )
+ if ( _qt_listWidget->currentRow() > -1 )
{
// Some item is selected after all; the Qt documtation says this
// happens if the QListBox is in single selection mode (which it is)
- // and has the keyboard focus.
+ // and has the keyboard focus. setCurrentRow( -1 ) does the trick for
+ // now, but who knows how this might change in future Qt versions.
//
// Synchronize internal "selected" flags with what the QListBox
// displays. This has a small performance penalty because it calls
// YSelectionBox::deselectAllItems() again which again iterates over
// all items.
- selectItem( _qt_listBox->row(_qt_listBox->currentItem()) );
+
+ int index = _qt_listWidget->row( _qt_listWidget->currentItem() );
+ selectItem( index );
}
}
void YQSelectionBox::deleteAllItems()
{
- YQSignalBlocker sigBlocker( _qt_listBox );
+ YQSignalBlocker sigBlocker( _qt_listWidget );
- _qt_listBox->clear();
+ _qt_listWidget->clear();
YSelectionBox::deleteAllItems();
}
@@ -199,8 +203,8 @@
{
int hintHeight = !_caption->isHidden() ? _caption->sizeHint().height() : 0;
int visibleLines = shrinkable() ? SHRINKABLE_VISIBLE_LINES : DEFAULT_VISIBLE_LINES;
- hintHeight += visibleLines * _qt_listBox->fontMetrics().lineSpacing();
- hintHeight += _qt_listBox->frameWidth() * 2;
+ hintHeight += visibleLines * _qt_listWidget->fontMetrics().lineSpacing();
+ hintHeight += _qt_listWidget->frameWidth() * 2;
return max( 80, hintHeight );
}
@@ -215,15 +219,15 @@
void YQSelectionBox::setEnabled( bool enabled )
{
_caption->setEnabled( enabled );
- _qt_listBox->setEnabled( enabled );
- //FIXME needed? _qt_listBox->triggerUpdate( true );
+ _qt_listWidget->setEnabled( enabled );
+ //FIXME needed? _qt_listWidget->triggerUpdate( true );
YWidget::setEnabled( enabled );
}
bool YQSelectionBox::setKeyboardFocus()
{
- _qt_listBox->setFocus();
+ _qt_listWidget->setFocus();
return true;
}
@@ -264,8 +268,10 @@
void YQSelectionBox::slotSelectionChanged()
{
- QList items = _qt_listBox->selectedItems ();
- selectItem( _qt_listBox->row( items.first() ) );
+ QList items = _qt_listWidget->selectedItems();
+
+ if ( ! items.empty() )
+ selectItem( _qt_listWidget->row( items.first() ) );
if ( notify() )
{
@@ -295,7 +301,7 @@
void YQSelectionBox::slotActivated( QListWidgetItem * qItem )
{
- selectItem( _qt_listBox->row( qItem ) );
+ selectItem( _qt_listWidget->row( qItem ) );
if ( notify() )
YQUI::ui()->sendEvent( new YWidgetEvent( this, YEvent::Activated ) );
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.16.31/src/YQSelectionBox.cc.bak new/yast2-qt-2.16.32/src/YQSelectionBox.cc.bak
--- old/yast2-qt-2.16.31/src/YQSelectionBox.cc.bak 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-qt-2.16.32/src/YQSelectionBox.cc.bak 2008-03-04 17:55:22.000000000 +0100
@@ -0,0 +1,337 @@
+/*---------------------------------------------------------------------\
+| |
+| __ __ ____ _____ ____ |
+| \ \ / /_ _/ ___|_ _|___ \ |
+| \ V / _` \___ \ | | __) | |
+| | | (_| |___) || | / __/ |
+| |_|\__,_|____/ |_| |_____| |
+| |
+| core system |
+| (C) SuSE GmbH |
+\----------------------------------------------------------------------/
+
+ File: YQSelectionBox.cc
+
+ Author: Stefan Hundhammer
+
+/-*/
+
+#include <QString>
+#include <QLabel>
+#include <QListWidget>
+#include
+#include <QPixmap>
+#include <QKeyEvent>
+#include <QVBoxLayout>
+#define YUILogComponent "qt-ui"
+#include "YUILog.h"
+
+using std::max;
+
+#include "utf8.h"
+#include "YEvent.h"
+#include "YQUI.h"
+#include "YQApplication.h"
+#include "YQSelectionBox.h"
+#include "YQSignalBlocker.h"
+#include "YQDialog.h"
+#include "YUIException.h"
+#include "YQWidgetCaption.h"
+
+#define VERBOSE_SELECTION 1
+
+#define DEFAULT_VISIBLE_LINES 5
+#define SHRINKABLE_VISIBLE_LINES 2
+
+
+YQSelectionBox::YQSelectionBox( YWidget * parent, const string & label )
+ : QFrame( (QWidget *) parent->widgetRep() )
+ , YSelectionBox( parent, label )
+{
+ setWidgetRep( this );
+
+ QVBoxLayout* layout = new QVBoxLayout( this );
+ setLayout( layout );
+
+ layout->setSpacing( YQWidgetSpacing );
+ layout->setMargin ( YQWidgetMargin );
+
+ _caption = new YQWidgetCaption( this, label );
+ YUI_CHECK_NEW( _caption );
+ layout->addWidget( _caption );
+
+ _qt_listWidget = new QListWidget( this );
+ YUI_CHECK_NEW( _qt_listWidget );
+ layout->addWidget( _qt_listWidget );
+
+ _qt_listWidget->installEventFilter( this );
+ //FIXME _qt_listWidget->setVariableHeight( false );
+ _qt_listWidget->setSizePolicy( QSizePolicy( QSizePolicy::Expanding,
+ QSizePolicy::Expanding ) );
+ //FIXME _qt_listWidget->setTopItem(0);
+ _caption->setBuddy( _qt_listWidget );
+
+ connect( _qt_listWidget, SIGNAL( itemSelectionChanged() ),
+ this, SLOT ( slotSelectionChanged() ) );
+
+ connect( _qt_listWidget, SIGNAL( itemDoubleClicked( QListWidgetItem * ) ),
+ this, SLOT ( slotActivated( QListWidgetItem * ) ) );
+
+ connect( &_timer, SIGNAL( timeout() ),
+ this, SLOT ( returnImmediately() ) );
+}
+
+
+YQSelectionBox::~YQSelectionBox()
+{
+ // NOP
+}
+
+
+void YQSelectionBox::setLabel( const string & label )
+{
+ _caption->setText( label );
+ YSelectionBox::setLabel( label );
+}
+
+
+void YQSelectionBox::addItem( YItem * item )
+{
+ YSelectionBox::addItem( item );
+ QPixmap icon;
+
+ if ( item->hasIconName() )
+ {
+ string iconName = iconFullPath( item );
+ icon = QPixmap( iconName.c_str() );
+
+ if ( icon.isNull() )
+ yuiWarning() << "Can't load icon " << iconName << endl;
+ }
+
+ if ( icon.isNull() )
+ {
+ _qt_listWidget->addItem( fromUTF8( item->label() ) );
+ }
+ else
+ {
+ QListWidgetItem *i = new QListWidgetItem( _qt_listWidget );
+ i->setData(Qt::DisplayRole, fromUTF8( item->label() ) );
+ i->setData(Qt::DecorationRole, icon );
+ _qt_listWidget->addItem( i );
+ }
+
+ if ( item->selected() )
+ {
+ YQSignalBlocker sigBlocker( _qt_listWidget );
+ _qt_listWidget->setCurrentItem( _qt_listWidget->item( item->index() ) );
+ }
+}
+
+
+void YQSelectionBox::selectItem( YItem * item, bool selected )
+{
+ YQSignalBlocker sigBlocker( _qt_listWidget );
+
+ YSelectionBox::selectItem( item, selected );
+ _qt_listWidget->setCurrentRow( selected ? item->index() : -1 );
+}
+
+
+void YQSelectionBox::selectItem( int index )
+{
+ YSelectionBox::deselectAllItems();
+ YItem * item = YSelectionBox::itemAt( index );
+
+ if ( item )
+ {
+#ifdef VERBOSE_SELECTION
+ yuiDebug() << this << ": Selecting item \"" << item << "\"" << endl;
+#endif
+
+ item->setSelected( true );
+ }
+ else
+ YUI_THROW( YUIException( "Can't find selected item" ) );
+}
+
+
+void YQSelectionBox::deselectAllItems()
+{
+ YSelectionBox::deselectAllItems();
+ _qt_listWidget->clearSelection();
+
+ if ( _qt_listWidget->currentRow() > -1 )
+ {
+ // Some item is selected after all; the Qt documtation says this
+ // happens if the QListBox is in single selection mode (which it is)
+ // and has the keyboard focus.
+ //
+ // Synchronize internal "selected" flags with what the QListBox
+ // displays. This has a small performance penalty because it calls
+ // YSelectionBox::deselectAllItems() again which again iterates over
+ // all items.
+
+ int index = _qt_listWidget->row( _qt_listWidget->currentItem() );
+ YItem * item = YSelectionBox::itemAt( index );
+
+ if ( item )
+ {
+ yuiWarning() << "deselectAllItems() not properly supported by this UI, selecting item "
+ << item << " in " << this
+ << endl;
+ selectItem( item );
+ }
+ }
+}
+
+
+void YQSelectionBox::deleteAllItems()
+{
+ YQSignalBlocker sigBlocker( _qt_listWidget );
+
+ _qt_listWidget->clear();
+ YSelectionBox::deleteAllItems();
+}
+
+
+
+int YQSelectionBox::preferredWidth()
+{
+ int hintWidth = !_caption->isHidden() ?
+ _caption->sizeHint().width() + frameWidth() : 0;
+
+ return max( 80, hintWidth );
+}
+
+
+int YQSelectionBox::preferredHeight()
+{
+ int hintHeight = !_caption->isHidden() ? _caption->sizeHint().height() : 0;
+ int visibleLines = shrinkable() ? SHRINKABLE_VISIBLE_LINES : DEFAULT_VISIBLE_LINES;
+ hintHeight += visibleLines * _qt_listWidget->fontMetrics().lineSpacing();
+ hintHeight += _qt_listWidget->frameWidth() * 2;
+
+ return max( 80, hintHeight );
+}
+
+
+void YQSelectionBox::setSize( int newWidth, int newHeight )
+{
+ resize( newWidth, newHeight );
+}
+
+
+void YQSelectionBox::setEnabled( bool enabled )
+{
+ _caption->setEnabled( enabled );
+ _qt_listWidget->setEnabled( enabled );
+ //FIXME needed? _qt_listWidget->triggerUpdate( true );
+ YWidget::setEnabled( enabled );
+}
+
+
+bool YQSelectionBox::setKeyboardFocus()
+{
+ _qt_listWidget->setFocus();
+
+ return true;
+}
+
+
+bool YQSelectionBox::eventFilter( QObject * obj, QEvent * ev )
+{
+ if ( ev->type() == QEvent::KeyPress )
+ {
+ QKeyEvent * event = ( QKeyEvent * ) ev;
+
+ if ( ( event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter ) &&
+ ( (event->modifiers() & Qt::NoModifier) || (event->modifiers() & Qt::KeypadModifier) ) )
+ {
+ YQDialog * dia = (YQDialog *) findDialog();
+
+ if ( dia )
+ {
+ ( void ) dia->activateDefaultButton();
+ return true;
+ }
+ }
+ }
+ else if ( ev->type() == QEvent::MouseButtonRelease )
+ {
+ QMouseEvent * mouseEvent = dynamic_cast (ev);
+
+ if ( mouseEvent && mouseEvent->button() == Qt::RightButton )
+ {
+ yuiMilestone() << "Right click in selecton box detected" << endl;
+ YQUI::yqApp()->maybeLeftHandedUser();
+ }
+ }
+
+ return QWidget::eventFilter( obj, ev );
+}
+
+
+void YQSelectionBox::slotSelectionChanged()
+{
+ QList items = _qt_listWidget->selectedItems ();
+ selectItem( _qt_listWidget->row( items.first() ) );
+
+ if ( notify() )
+ {
+ if ( immediateMode() )
+ returnImmediately();
+ else
+ {
+ if ( ! YQUI::ui()->eventsBlocked() )
+ {
+ // Delayed event delivery - only if events are to be delivered
+ // right now.
+ //
+ // An event block that is in effect right now may or may not
+ // affect events after the timer delay is expired.
+ //
+ // This may create nasty side effects such as bug #32510: When
+ // an item is initially selected, that initial selection event
+ // gets through even though (!) events are blocked during
+ // widget creation.
+
+ returnDelayed();
+ }
+ }
+ }
+}
+
+
+void YQSelectionBox::slotActivated( QListWidgetItem * qItem )
+{
+ selectItem( _qt_listWidget->row( qItem ) );
+
+ if ( notify() )
+ YQUI::ui()->sendEvent( new YWidgetEvent( this, YEvent::Activated ) );
+}
+
+
+void YQSelectionBox::returnImmediately()
+{
+ if ( ! YQUI::ui()->eventPendingFor( this ) )
+ {
+ // Avoid overwriting a (more important) Activated event with a
+ // SelectionChanged event
+
+ yuiDebug() << "Sending selbox event" << endl;
+ YQUI::ui()->sendEvent( new YWidgetEvent( this, YEvent::SelectionChanged ) );
+ }
+}
+
+
+void YQSelectionBox::returnDelayed()
+{
+ yuiDebug() << "Starting selbox timer" << endl;
+ _timer.setSingleShot( true );
+ _timer.start( 250 ); // millisec
+}
+
+
+
+#include "YQSelectionBox.moc"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.16.31/src/YQSelectionBox.h new/yast2-qt-2.16.32/src/YQSelectionBox.h
--- old/yast2-qt-2.16.31/src/YQSelectionBox.h 2008-02-27 14:28:20.000000000 +0100
+++ new/yast2-qt-2.16.32/src/YQSelectionBox.h 2008-03-04 17:55:22.000000000 +0100
@@ -163,7 +163,7 @@
//
YQWidgetCaption * _caption;
- QListWidget * _qt_listBox;
+ QListWidget * _qt_listWidget;
QTimer _timer;
};
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.16.31/src/YQSelectionBox.h.bak new/yast2-qt-2.16.32/src/YQSelectionBox.h.bak
--- old/yast2-qt-2.16.31/src/YQSelectionBox.h.bak 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-qt-2.16.32/src/YQSelectionBox.h.bak 2008-03-04 17:55:22.000000000 +0100
@@ -0,0 +1,170 @@
+/*---------------------------------------------------------------------\
+| |
+| __ __ ____ _____ ____ |
+| \ \ / /_ _/ ___|_ _|___ \ |
+| \ V / _` \___ \ | | __) | |
+| | | (_| |___) || | / __/ |
+| |_|\__,_|____/ |_| |_____| |
+| |
+| core system |
+| (C) SuSE GmbH |
+\----------------------------------------------------------------------/
+
+ File: YQSelectionBox.h
+
+ Author: Stefan Hundhammer
+
+/-*/
+
+
+#ifndef YQSelectionBox_h
+#define YQSelectionBox_h
+
+#include <QFrame>
+#include <QTimer>
+
+#include "YSelectionBox.h"
+
+class YQWidgetCaption;
+class QListWidget;
+class QListWidgetItem;
+
+
+class YQSelectionBox : public QFrame, public YSelectionBox
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructor.
+ **/
+ YQSelectionBox( YWidget * parent, const string & label );
+
+ /**
+ * Destructor.
+ **/
+ virtual ~YQSelectionBox();
+
+ /**
+ * Change the label text.
+ *
+ * Reimplemented from YSelectionWidget.
+ **/
+ virtual void setLabel( const string & label );
+
+ /**
+ * Add an item.
+ *
+ * Reimplemented from YSelectionWidget.
+ **/
+ virtual void addItem( YItem * item );
+
+ /**
+ * Select or deselect an item.
+ *
+ * Reimplemented from YSelectionWidget.
+ **/
+ virtual void selectItem( YItem * item, bool selected = true );
+
+ /**
+ * Deselect all items.
+ *
+ * Reimplemented from YSelectionWidget.
+ **/
+ virtual void deselectAllItems();
+
+ /**
+ * Delete all items.
+ *
+ * Reimplemented from YSelectionWidget.
+ **/
+ virtual void deleteAllItems();
+
+ /**
+ * Set enabled/disabled state.
+ *
+ * Reimplemented from YWidget.
+ **/
+ virtual void setEnabled( bool enabled );
+
+ /**
+ * Preferred width of the widget.
+ *
+ * Reimplemented from YWidget.
+ **/
+ virtual int preferredWidth();
+
+ /**
+ * Preferred height of the widget.
+ *
+ * Reimplemented from YWidget.
+ **/
+ virtual int preferredHeight();
+
+ /**
+ * Set the new size of the widget.
+ *
+ * Reimplemented from YWidget.
+ **/
+ virtual void setSize( int newWidth, int newHeight );
+
+ /**
+ * Accept the keyboard focus.
+ *
+ * Reimplemented from YWidget.
+ **/
+ virtual bool setKeyboardFocus();
+
+ /**
+ * Event filter.
+ *
+ * Reimplemented from QWidget.
+ **/
+ virtual bool eventFilter( QObject * obj, QEvent * ev );
+
+
+protected slots:
+
+ /**
+ * Notification that an item has been selected.
+ * This is only relevant if `opt(`notify ) is set.
+ **/
+ void slotSelectionChanged();
+
+ /**
+ * Notification that an item has been activated (double clicked).
+ **/
+ void slotActivated( QListWidgetItem * item );
+
+ /**
+ * Return after some millseconds delay - collect multiple events.
+ * This is only relevant if `opt( `notify ) is set.
+ **/
+ void returnDelayed();
+
+ /**
+ * Return immediately.
+ * This is only relevant if `opt( `notify ) is set.
+ **/
+ void returnImmediately();
+
+
+protected:
+
+ /**
+ * Select an item by index.
+ **/
+ void selectItem( int index );
+
+
+ //
+ // Data members
+ //
+
+ YQWidgetCaption * _caption;
+ QListWidget * _qt_listBox;
+ QTimer _timer;
+};
+
+#endif // YQLabel_h
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-qt-2.16.31/VERSION.cmake new/yast2-qt-2.16.32/VERSION.cmake
--- old/yast2-qt-2.16.31/VERSION.cmake 2008-02-27 14:28:20.000000000 +0100
+++ new/yast2-qt-2.16.32/VERSION.cmake 2008-03-04 17:55:22.000000000 +0100
@@ -1,3 +1,3 @@
SET(VERSION_MAJOR "2")
SET(VERSION_MINOR "16")
-SET(VERSION_PATCH "31")
+SET(VERSION_PATCH "32")
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org