[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdenonbeta/krecipes/src/widgets
From: Unai Garro <Unai.Garro () ee ! ed ! ac ! uk>
Date: 2003-11-23 20:14:29
[Download RAW message or body]
CVS commit by uga:
Fix positioning after removal of a button (right now it only supports removal of the \
last button)
M +24 -3 kremenu.cpp 1.14
M +2 -1 kremenu.h 1.7
--- kdenonbeta/krecipes/src/widgets/kremenu.cpp #1.13:1.14
@@ -19,5 +19,5 @@
#include <qpixmap.h>
-#include <iostream.h>
+#include <iostream>
#include <kcursor.h>
@@ -185,8 +185,29 @@ void KreMenu::childEvent (QChildEvent *e
button->move(0,childPos);
childPos+=button->height();
- widgetList[button]=widgetNumber; widgetNumber++; // Store index for \
this widget, and increment number + positionList[button]=widgetNumber; \
// Store index for this widget, and increment number + \
widgetList[widgetNumber]=button; // Store the button in the list (the inverse mapping \
of the previous one) + widgetNumber++;
+
connect \
(button,SIGNAL(clicked(KreMenuButton*)),this,SLOT(collectClicks(KreMenuButton*))); }
}
+ else if (e->type()==QEvent::ChildRemoved)
+ {
+ QObject *child=e->child();
+ KreMenuButton *button=(KreMenuButton*) child;
+ if (positionList.find(button)!=positionList.end()) // Ensure that what was \
removed was a button + {
+ // Remove the button from the list first
+ int pos=positionList[button];
+ widgetList.remove(pos);
+ positionList.remove(button);
+
+ // Now recalculate the position of the next button
+ widgetNumber--;
+ std::cerr<<"Will be inserted after widget \
id.:"<<widgetNumber-1<<"\n"; + KreMenuButton \
*lastButton=widgetList[widgetNumber-1]; + if (lastButton) \
childPos=lastButton->y()+lastButton->height(); + }
+ }
}
@@ -201,5 +222,5 @@ activeButton->update();
//Activate the new button
-int widgetn=widgetList[w];
+int widgetn=positionList[w];
w->setActive(true); w->update();
activeButton=w;
--- kdenonbeta/krecipes/src/widgets/kremenu.h #1.6:1.7
@@ -53,5 +53,6 @@ private:
int childPos;
int widgetNumber;
- QMap <KreMenuButton*,int> widgetList; // Stores the indexes for the widgets
+ QMap <KreMenuButton*,int> positionList; // Stores the indexes for the \
widgets + QMap <int,KreMenuButton*> widgetList; // Stores the widgets for each \
position (just the inverse mapping)
KreMenuButton* activeButton; // Indicates which button is highlighted
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic