[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/khtml/rendering
From: Maks Orlovich <maksim () kde ! org>
Date: 2010-04-05 0:14:58
Message-ID: 20100405001458.ACC5BAC857 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1111163 by orlovich:
Fix disabling of optgroups/options in combobx mode as well (also making it \
unselectable in that mode).
Seems to be nearly perfect, except for not skipping the disabled items when chosing \
defaults.
CCBUG: 76489
M +34 -34 render_form.cpp
M +2 -0 render_form.h
--- trunk/KDE/kdelibs/khtml/rendering/render_form.cpp #1111162:1111163
@@ -61,6 +61,7 @@
#include <QStyleOptionButton>
#include <QtGui/QLabel>
#include <QtGui/QStyleOptionFrameV3>
+#include <QtGui/QStandardItemModel>
#include <misc/helper.h>
#include <xml/dom2_eventsimpl.h>
@@ -1661,6 +1662,20 @@
}
}
+void RenderSelect::clearItemFlags(int index, Qt::ItemFlags flags)
+{
+ if(m_useListBox) {
+ QListWidgetItem* item = static_cast<KListWidget*>(m_widget)->item(index);
+ item->setFlags(item->flags() & ~flags);
+ } else {
+ KComboBox* combo = static_cast<KComboBox*>(m_widget);
+ if (QStandardItemModel* model = \
qobject_cast<QStandardItemModel*>(combo->model())) { + QStandardItem* item \
= model->item(index); + item->setFlags(item->flags() & ~flags);
+ }
+ }
+}
+
void RenderSelect::updateFromElement()
{
m_ignoreSelectEvents = true;
@@ -1699,10 +1714,8 @@
const QVector<HTMLGenericFormElementImpl*> listItems = \
element()->listItems(); int listIndex;
- if(m_useListBox) {
+ if(m_useListBox)
static_cast<KListWidget*>(m_widget)->clear();
- }
-
else
static_cast<KComboBox*>(m_widget)->clear();
@@ -1714,28 +1727,18 @@
text = text.implementation()->collapseWhiteSpace(false, false);
- bool disabled = \
!listItems[listIndex]->getAttribute(ATTR_DISABLED).isNull();
-
if(m_useListBox) {
QListWidgetItem *item = new \
QListWidgetItem(QString(text.implementation()->s, \
text.implementation()->l));
- static_cast<KListWidget*>(m_widget)
- ->insertItem(listIndex,item);
+ static_cast<KListWidget*>(m_widget)->insertItem(listIndex,item);
+ } else {
+ static_cast<KComboBox*>(m_widget)->insertItem(listIndex, \
QString(text.implementation()->s, text.implementation()->l)); + }
- if (disabled)
- item->setFlags(item->flags() & ~(Qt::ItemIsSelectable | \
Qt::ItemIsEnabled));
- else
- item->setFlags(item->flags() & ~Qt::ItemIsSelectable);
- }
- else {
- static_cast<KComboBox*>(m_widget)
- ->insertItem(listIndex, QString(text.implementation()->s, \
text.implementation()->l));
-#ifdef __GNUC__
- #warning "This needs fixing (though did it work in 3?)"
-#endif
-#if 0
- static_cast<KComboBox*>(m_widget)->listBox()->item(listIndex)->setSelectable(false);
-#endif
- }
+ bool disabled = \
!listItems[listIndex]->getAttribute(ATTR_DISABLED).isNull(); + \
if (disabled) + clearItemFlags(listIndex, Qt::ItemIsSelectable | \
Qt::ItemIsEnabled); + else
+ clearItemFlags(listIndex, Qt::ItemIsSelectable);
}
else if (listItems[listIndex]->id() == ID_OPTION) {
HTMLOptionElementImpl* optElem = \
static_cast<HTMLOptionElementImpl*>(listItems[listIndex]); @@ -1759,20 +1762,17 @@
text = domText.string();
}
- if(m_useListBox) {
- KListWidget *l = static_cast<KListWidget*>(m_widget);
- l->insertItem(listIndex,text);
+ if(m_useListBox)
+ static_cast<KListWidget*>(m_widget)->insertItem(listIndex,text);
+ else
+ static_cast<KComboBox*>(m_widget)->insertItem(listIndex, text);
- bool disabled = !optElem->getAttribute(ATTR_DISABLED).isNull();
- if (parentOptGroup)
- disabled = disabled || \
!parentOptGroup->getAttribute(ATTR_DISABLED).isNull(); + bool disabled \
= !optElem->getAttribute(ATTR_DISABLED).isNull(); + if \
(parentOptGroup) + disabled = disabled || \
!parentOptGroup->getAttribute(ATTR_DISABLED).isNull();
- if (disabled && l->item( listIndex )) {
- l->item( listIndex )->setFlags( l->item(listIndex)->flags()
- & ~(Qt::ItemIsSelectable \
| Qt::ItemIsEnabled) );
- }
- } else
- static_cast<KComboBox*>(m_widget)->insertItem(listIndex, text);
+ if (disabled)
+ clearItemFlags(listIndex, Qt::ItemIsSelectable | \
Qt::ItemIsEnabled); }
else
KHTMLAssert(false);
--- trunk/KDE/kdelibs/khtml/rendering/render_form.h #1111162:1111163
@@ -480,6 +480,8 @@
bool m_ignoreSelectEvents;
bool m_optionsChanged;
+ void clearItemFlags(int index, Qt::ItemFlags flags);
+
protected Q_SLOTS:
void slotSelected(int index);
void slotSelectionChanged();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic