javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/qcaptionedwidget.cpp
changeset 21 2a9601315dfc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/qcaptionedwidget.cpp	Mon May 03 12:27:20 2010 +0300
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia Corporation - initial implementation
+ *******************************************************************************/
+
+#include <QLabel>
+#include <QBoxLayout>
+#include <QApplication>
+#include <QStylePainter>
+#include <QStyleOptionFocusRect>
+#include "qcaptionedwidget.h"
+#include "swtlog.h"
+
+
+using namespace Java::eSWT;
+
+
+QCaptionedWidget::QCaptionedWidget()
+    : QFrame()
+    , mFocus( false )
+    {
+    SWT_LOG_FUNC_CALL();
+    connect( qApp, SIGNAL( focusChanged( QWidget*, QWidget* ) ),
+        this, SLOT( focusChanged( QWidget*, QWidget* ) ) );
+    }
+
+void QCaptionedWidget::focusChanged( QWidget* aOldWidget, QWidget* aNewWidget )
+    {
+    SWT_LOG_FUNC_CALL();
+    bool isOldWidgetChild = isAncestorOf( aOldWidget );
+    bool isNewWidgetChild = isAncestorOf( aNewWidget );
+    mFocus = isNewWidgetChild;
+    if ( isOldWidgetChild != isNewWidgetChild )
+        {
+        update();
+        }
+    }
+
+void QCaptionedWidget::paintEvent( QPaintEvent* aEvent )
+    {
+    SWT_LOG_FUNC_CALL();
+    QFrame::paintEvent( aEvent );
+    QStylePainter painter( this );
+    if ( mFocus )
+        {
+        QStyleOptionButton optFocusHelper;
+        optFocusHelper.initFrom( this );
+        QStyleOptionFocusRect optFocus;
+        optFocus.initFrom( this );
+        optFocus.rect = painter.style()->subElementRect( QStyle::SE_PushButtonFocusRect, &optFocusHelper, this );
+        painter.drawPrimitive( QStyle::PE_FrameFocusRect, optFocus );
+        }
+    }