[Ktutorial-commits] SF.net SVN: ktutorial:[241] trunk/ktutorial/ktutorial-library
Status: Alpha
Brought to you by:
danxuliu
|
From: <dan...@us...> - 2010-05-18 15:39:24
|
Revision: 241
http://ktutorial.svn.sourceforge.net/ktutorial/?rev=241&view=rev
Author: danxuliu
Date: 2010-05-18 15:39:17 +0000 (Tue, 18 May 2010)
Log Message:
-----------
Fix highlighting a parent widget of a currently highlighted widget.
Modified Paths:
--------------
trunk/ktutorial/ktutorial-library/src/extendedinformation/WidgetHighlighterManager.cpp
trunk/ktutorial/ktutorial-library/src/extendedinformation/WidgetHighlighterManager.h
trunk/ktutorial/ktutorial-library/tests/extendedinformation/WidgetHighlighterManagerTest.cpp
Modified: trunk/ktutorial/ktutorial-library/src/extendedinformation/WidgetHighlighterManager.cpp
===================================================================
--- trunk/ktutorial/ktutorial-library/src/extendedinformation/WidgetHighlighterManager.cpp 2010-05-18 15:37:12 UTC (rev 240)
+++ trunk/ktutorial/ktutorial-library/src/extendedinformation/WidgetHighlighterManager.cpp 2010-05-18 15:39:17 UTC (rev 241)
@@ -31,6 +31,11 @@
void WidgetHighlighterManager::highlight(QWidget* widget) {
WidgetHighlighter* highlighter = widget->findChild<WidgetHighlighter*>();
+ if (highlighter && !widget->children().contains(highlighter)) {
+ stopHighlighting(highlighter->parentWidget());
+ highlighter = 0;
+ }
+
if (!highlighter) {
highlighter = new WidgetHighlighter(widget);
connect(highlighter, SIGNAL(stopped(extendedinformation::WidgetHighlighter*)),
@@ -42,7 +47,7 @@
void WidgetHighlighterManager::stopHighlighting(QWidget* widget) {
WidgetHighlighter* highlighter = widget->findChild<WidgetHighlighter*>();
- if (!highlighter) {
+ if (!highlighter || !widget->children().contains(highlighter)) {
return;
}
Modified: trunk/ktutorial/ktutorial-library/src/extendedinformation/WidgetHighlighterManager.h
===================================================================
--- trunk/ktutorial/ktutorial-library/src/extendedinformation/WidgetHighlighterManager.h 2010-05-18 15:37:12 UTC (rev 240)
+++ trunk/ktutorial/ktutorial-library/src/extendedinformation/WidgetHighlighterManager.h 2010-05-18 15:39:17 UTC (rev 241)
@@ -53,7 +53,9 @@
/**
* Starts a WidgetHighlighter for the given widget.
- * If the widget was already being highlighted nothing is done.
+ * If the widget was already being highlighted nothing is done. If a child
+ * widget was already being highlighted it is stopped, so only the parent
+ * highlighting is active.
*
* @param widget The widget to highlight.
*/
Modified: trunk/ktutorial/ktutorial-library/tests/extendedinformation/WidgetHighlighterManagerTest.cpp
===================================================================
--- trunk/ktutorial/ktutorial-library/tests/extendedinformation/WidgetHighlighterManagerTest.cpp 2010-05-18 15:37:12 UTC (rev 240)
+++ trunk/ktutorial/ktutorial-library/tests/extendedinformation/WidgetHighlighterManagerTest.cpp 2010-05-18 15:39:17 UTC (rev 241)
@@ -37,9 +37,11 @@
void testHighlight();
void testHighlightWidgetAlreadyHighlighted();
+ void testHighlightChildAlreadyHighlighted();
void testHighlightAfterStopHighlighting();
void testStopHighlighting();
+ void testStopHighlightingWhenChildIsBeingHighlighted();
void testDeleteWidgetWhileHighlighting();
@@ -86,6 +88,23 @@
QCOMPARE(highlighterOf(&widget), highlighter);
}
+void WidgetHighlighterManagerTest::testHighlightChildAlreadyHighlighted() {
+ QWidget widget;
+ QWidget* child = new QWidget(&widget);
+ WidgetHighlighterManager* manager = WidgetHighlighterManager::self();
+
+ manager->highlight(child);
+
+ WidgetHighlighter* childHighlighter = highlighterOf(child);
+
+ manager->highlight(&widget);
+
+ QCOMPARE(widget.findChildren<WidgetHighlighter*>().count(), 1);
+ QVERIFY(highlighterOf(&widget));
+ QVERIFY(highlighterOf(&widget) != childHighlighter);
+ QVERIFY(!highlighterOf(child));
+}
+
void WidgetHighlighterManagerTest::testHighlightAfterStopHighlighting() {
QWidget widget;
WidgetHighlighterManager* manager = WidgetHighlighterManager::self();
@@ -126,6 +145,30 @@
QCOMPARE(widget.findChildren<WidgetHighlighter*>().count(), 0);
}
+void WidgetHighlighterManagerTest::
+ testStopHighlightingWhenChildIsBeingHighlighted() {
+ QWidget widget;
+ QWidget* child = new QWidget(&widget);
+ WidgetHighlighterManager* manager = WidgetHighlighterManager::self();
+
+ manager->highlight(child);
+
+ //Give it some time to update
+ QTest::qWait(100);
+
+ manager->stopHighlighting(&widget);
+
+ //Give it some time to update
+ QTest::qWait(200);
+
+ //The highlighter should have not been stopped, as it was not highlighting
+ //the parent widget, but the child
+ QCOMPARE(widget.findChildren<WidgetHighlighter*>().count(), 1);
+ QVERIFY(highlighterOf(child));
+ QVERIFY(highlighterOf(child)->mProgress > 0);
+ QVERIFY(highlighterOf(child)->mIncreasing);
+}
+
void WidgetHighlighterManagerTest::testDeleteWidgetWhileHighlighting() {
QWidget* widget = new QWidget();
WidgetHighlighterManager* manager = WidgetHighlighterManager::self();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|