ginebra2/PopupWebChromeItem.cpp
changeset 5 0f2326c2a325
parent 0 1450b09d0cfd
child 6 1c3b8676e58c
--- a/ginebra2/PopupWebChromeItem.cpp	Fri May 14 15:40:36 2010 +0300
+++ b/ginebra2/PopupWebChromeItem.cpp	Wed Jun 23 17:59:43 2010 +0300
@@ -1,21 +1,24 @@
 /*
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as published by
+* the Free Software Foundation, version 2.1 of the License.
 *
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU Lesser General Public License for more details.
 *
-* Contributors:
+* You should have received a copy of the GNU Lesser General Public License
+* along with this program.  If not,
+* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
 *
-* Description: 
+* Description:
 *
 */
 
-
 #include "PopupWebChromeItem.h"
 #include "ChromeWidget.h"
 #include "WebChromeSnippet.h"
@@ -26,8 +29,10 @@
         const QRectF & ownerArea,
         ChromeWidget * chrome,
         const QWebElement & element,
-        QGraphicsItem * parent)
-: WebChromeItem(ownerArea, chrome, element, parent)
+        QGraphicsItem * parent,
+        bool modal)
+: WebChromeItem(ownerArea, chrome, element, parent),
+  m_modal(modal)
 {
 }
 
@@ -52,12 +57,18 @@
 
     checkForExternalEvent(this, e);
 
-    switch(e->type()) {
+    switch (e->type()) {
       case QEvent::Show:
         scene()->installEventFilter(this);
+        if(snippet() && m_modal) {
+            chrome()->emitPopupShown(snippet()->objectName());
+        }
         break;
       case QEvent::Hide:
         scene()->removeEventFilter(this);
+        if(snippet() && m_modal) {
+            chrome()->emitPopupHidden(snippet()->objectName());
+        }
         break;
       default: break;
     }
@@ -94,7 +105,9 @@
     case QEvent::GraphicsSceneMousePress:
     case QEvent::GraphicsSceneMouseRelease:
     case QEvent::GraphicsSceneMouseDoubleClick:
-    case QEvent::GraphicsSceneResize:
+// Commented out because new context menu resizes itself, don't want externalMouseEvents
+// in that case.
+//    case QEvent::GraphicsSceneResize:
         break;
     default:
         return;
@@ -104,12 +117,17 @@
     // If it was outside this item's bounding rectangle,
     // then tell the world.
 
-    if(e->type() == QEvent::GraphicsSceneResize)
-    {
-    	emitExternalEvent(e);
-    	return;
-    }
-    
+// Commented out because new context menu resizes itself, don't want externalMouseEvents
+// in that case.
+//    if (e->type() == QEvent::GraphicsSceneResize)
+//    {
+//        QGraphicsSceneResizeEvent *resizeEvent = static_cast<QGraphicsSceneResizeEvent *>(e);
+//        qDebug() << "PopupWebChromeItem::checkForExternalEvent: " << resizeEvent->newSize() << resizeEvent->oldSize();
+//        if (resizeEvent->newSize() != resizeEvent->oldSize())
+//          emitExternalEvent(e);
+//      return;
+//    }
+
     QGraphicsSceneMouseEvent * me = static_cast<QGraphicsSceneMouseEvent*>(e);
 
     QPointF eventPosition = me->scenePos();