[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/koffice/1.6/koffice/kexi/plugins/forms
From:       Jaroslaw Staniek <js () iidea ! pl>
Date:       2006-10-23 8:36:37
Message-ID: 1161592597.222597.8628.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 598320 by staniek:

Forms
= fixed default size of combo box widgets
= removed crash when a combobox without a data source was clicked

2.0: merged



 M  +1 -1      kexiformdataiteminterface.cpp  
 M  +3 -1      kexiformscrollview.cpp  
 M  +2 -1      kexiformscrollview.h  
 M  +29 -8     widgets/kexidbcombobox.cpp  
 M  +6 -1      widgets/kexidbcombobox.h  


--- branches/koffice/1.6/koffice/kexi/plugins/forms/kexiformdataiteminterface.cpp \
#598319:598320 @@ -46,7 +46,7 @@
 
 KexiDB::Field* KexiFormDataItemInterface::field() const
 {
-	return m_columnInfo->field;
+	return m_columnInfo ? m_columnInfo->field : 0;
 }
 
 void KexiFormDataItemInterface::setDisplayDefaultValue(QWidget* widget, bool \
                displayDefaultValue)
--- branches/koffice/1.6/koffice/kexi/plugins/forms/kexiformscrollview.cpp \
#598319:598320 @@ -162,10 +162,12 @@
 	//! @todo
 }
 
-void KexiFormScrollView::addHeaderColumn(const QString& caption, const QString& \
description, int width) +void KexiFormScrollView::addHeaderColumn(const QString& \
caption, const QString& description,  +	const QIconSet& icon, int width)
 {
 	Q_UNUSED( caption );
 	Q_UNUSED( description );
+	Q_UNUSED( icon );
 	Q_UNUSED( width );
 
 	//! @todo
--- branches/koffice/1.6/koffice/kexi/plugins/forms/kexiformscrollview.h \
#598319:598320 @@ -193,7 +193,8 @@
 		virtual void clearColumnsInternal(bool repaint);
 
 		//! Implementation for KexiDataAwareObjectInterface
-		virtual void addHeaderColumn(const QString& caption, const QString& description, \
int width); +		virtual void addHeaderColumn(const QString& caption, const QString& \
description,  +			const QIconSet& icon, int width);
 
 		//! Implementation for KexiDataAwareObjectInterface
 		virtual int currentLocalSortingOrder() const;
--- branches/koffice/1.6/koffice/kexi/plugins/forms/widgets/kexidbcombobox.cpp \
#598319:598320 @@ -46,7 +46,8 @@
 		}
 
 	KComboBox *paintedCombo; //!< fake combo used only to pass it as 'this' for QStyle \
                (because styles use <static_cast>)
-
+	QSize sizeHint; //!< A cache for KexiDBComboBox::sizeHint(), 
+	                //!< rebuilt by KexiDBComboBox::fontChange() and \
KexiDBComboBox::styleChange()  bool isEditable : 1;
 	bool buttonPressed : 1;
 	bool mouseOver : 1;
@@ -151,13 +152,6 @@
 	return r;
 }
 
-void KexiDBComboBox::styleChange( QStyle& s )
-{
-	KexiDBAutoField::styleChange( s );
-	if (m_subwidget)
-		m_subwidget->setGeometry( editorGeometry() );
-}
-
 void KexiDBComboBox::createEditor()
 {
 	if (!d->isEditable)
@@ -455,4 +449,31 @@
 	return m_popup->width();
 }
 
+void KexiDBComboBox::fontChange( const QFont & oldFont )
+{
+	d->sizeHint = QSize(); //force rebuild the cache
+	KexiDBAutoField::fontChange(oldFont);
+}
+
+void KexiDBComboBox::styleChange( QStyle& oldStyle )
+{
+	KexiDBAutoField::styleChange( oldStyle );
+	d->sizeHint = QSize(); //force rebuild the cache
+	if (m_subwidget)
+		m_subwidget->setGeometry( editorGeometry() );
+}
+
+QSize KexiDBComboBox::sizeHint() const
+{
+	if ( isVisible() && d->sizeHint.isValid() )
+		return d->sizeHint;
+
+	const int maxWidth = 7 * fontMetrics().width(QChar('x')) + 18;
+	const int maxHeight = QMAX( fontMetrics().lineSpacing(), 14 ) + 2;
+	d->sizeHint = (style().sizeFromContents(QStyle::CT_ComboBox, d->paintedCombo,
+		QSize(maxWidth, maxHeight)).expandedTo(QApplication::globalStrut()));
+
+	return d->sizeHint;
+}
+
 #include "kexidbcombobox.moc"
--- branches/koffice/1.6/koffice/kexi/plugins/forms/widgets/kexidbcombobox.h \
#598319:598320 @@ -66,6 +66,8 @@
 
 		virtual QVariant value() { return KexiComboBoxBase::value(); }
 
+		virtual QSize sizeHint() const;
+
 /*
 		inline QString dataSource() const { return \
KexiFormDataItemInterface::dataSource(); }  inline QCString dataSourceMimeType() \
const { return KexiFormDataItemInterface::dataSourceMimeType(); } @@ -139,8 +141,11 \
@@  virtual void createEditor();
 
 		/*! Reimplemented */
-		virtual void styleChange( QStyle& s );
+		virtual void styleChange( QStyle& oldStyle );
 
+		/*! Reimplemented */
+		virtual void fontChange( const QFont & oldFont );
+
 		virtual bool subwidgetStretchRequired(KexiDBAutoField* autoField) const;
 
 		//! Implemented for KexiComboBoxBase


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic