From kde-panel-devel Wed Apr 30 15:04:50 2008 From: Davide Bettio Date: Wed, 30 Apr 2008 15:04:50 +0000 To: kde-panel-devel Subject: KDE/kdebase/workspace Message-Id: <1209567890.328544.30741.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-panel-devel&m=120956845522418 SVN commit 802774 by bettio: API REVIEW: * watchForMouseMove() -> registerAsDragHandle() / unregisterDragHandle() * Added isRegisteredAsDragHandle() (I'm not really sure If it's a good idea to add this method). ping me if you find better names for registerAsDragHandle() / unregisterDragHandle(). CCMAIL: panel-devel@kde.org M +26 -13 libs/plasma/applet.cpp M +17 -5 libs/plasma/applet.h M +1 -1 plasma/applets/icon/icon.cpp M +1 -1 plasma/applets/trash/trash.cpp --- trunk/KDE/kdebase/workspace/libs/plasma/applet.cpp #802773:802774 @@ -351,7 +351,7 @@ KPluginInfo appletDescription; Package* package; OverlayWidget *needsConfigOverlay; - QList watchedForMouseMove; + QList registeredAsDragHandle; QStringList loadedEngines; Plasma::PanelSvg *background; AppletScript *script; @@ -1069,24 +1069,37 @@ d->aspectRatioMode = mode; } -void Applet::watchForMouseMove( QGraphicsItem * watched, bool watch ) +void Applet::registerAsDragHandle( QGraphicsItem * item ) { - if (!watched) { + if (!item) { return; } - int index = d->watchedForMouseMove.indexOf(watched); - if (watch) { - if (index == -1) { - d->watchedForMouseMove.append(watched); - watched->installSceneEventFilter(this); - } - } else if (index != -1) { - d->watchedForMouseMove.removeAt(index); - watched->removeSceneEventFilter(this); + int index = d->registeredAsDragHandle.indexOf(item); + if (index == -1) { + d->registeredAsDragHandle.append(item); + item->installSceneEventFilter(this); } } +void Applet::unregisterDragHandle( QGraphicsItem * item ) +{ + if (!item) { + return; + } + + int index = d->registeredAsDragHandle.indexOf(item); + if (index != -1) { + d->registeredAsDragHandle.removeAt(index); + item->removeSceneEventFilter(this); + } +} + +bool Applet::isRegisteredAsDragHandle( QGraphicsItem * item ) +{ + return (d->registeredAsDragHandle.indexOf(item) != -1); +} + bool Applet::hasConfigurationInterface() const { return d->hasConfigurationInterface; @@ -1106,7 +1119,7 @@ { switch (event->type()) { case QEvent::GraphicsSceneMouseMove: { - if (d->watchedForMouseMove.contains( watched )) { + if (d->registeredAsDragHandle.contains( watched )) { mouseMoveEvent(static_cast(event)); return true; } --- trunk/KDE/kdebase/workspace/libs/plasma/applet.h #802773:802774 @@ -608,18 +608,30 @@ void setBackgroundHints(const BackgroundHints hints); /** - * Register the widgets that manages mouse clicks but you still want + * Register the widgets that manage mouse clicks but you still want * to be able to drag the applet around when holding the mouse pointer - * on that widgets. + * on that widget. * * Calling this results in an eventFilter being places on the widget. * - * @param widget the widget to watch for mouse move - * @param watch whether to start watching the widget, or to stop doing so + * @param item the item to watch for mouse move */ - void watchForMouseMove(QGraphicsItem *widget, bool watch); + void registerAsDragHandle( QGraphicsItem * item ); /** + * Unregister a widget registered with registerAsDragHandle. + * + * @param item the item to unregister + */ + void unregisterDragHandle( QGraphicsItem * item ); + + /** + * @param item the item to look for if it is registered or not + * @return true if it is registered, false otherwise + */ + bool isRegisteredAsDragHandle( QGraphicsItem * item ); + + /** * @internal event filter; used for focus watching **/ bool eventFilter( QObject *o, QEvent *e ); --- trunk/KDE/kdebase/workspace/plasma/applets/icon/icon.cpp #802773:802774 @@ -68,7 +68,7 @@ } setDisplayLines(2); - watchForMouseMove(m_icon, true); + registerAsDragHandle(m_icon); // we do this right away since we may have our config // read shortly by the containment. usually applets don't need --- trunk/KDE/kdebase/workspace/plasma/applets/trash/trash.cpp #802773:802774 @@ -94,7 +94,7 @@ m_dirLister->openUrl(m_trashUrl); m_icon->setDrawBackground(true); - watchForMouseMove(m_icon, true); + registerAsDragHandle(m_icon); //setMinimumSize(m_icon->sizeFromIconSize(IconSize(KIconLoader::Small))); resize(m_icon->sizeFromIconSize(IconSize(KIconLoader::Desktop))); //FIXME PORT TO TOOLTIP MANAGER _______________________________________________ Panel-devel mailing list Panel-devel@kde.org https://mail.kde.org/mailman/listinfo/panel-devel