Commit 09c1ba37 authored by Ilia Ryabokon's avatar Ilia Ryabokon

Moved #1380 #1370 and #1369 from 2.10.00

parent 8abe5e77
...@@ -52,6 +52,11 @@ ...@@ -52,6 +52,11 @@
#include "board/UBBoardController.h" #include "board/UBBoardController.h"
#include "board/UBBoardPaletteManager.h" #include "board/UBBoardPaletteManager.h"
#ifdef Q_WS_MAC
#include "core/UBApplicationController.h"
#include "desktop/UBDesktopAnnotationController.h"
#endif
#include "domain/UBGraphicsTextItem.h" #include "domain/UBGraphicsTextItem.h"
#include "domain/UBGraphicsPixmapItem.h" #include "domain/UBGraphicsPixmapItem.h"
#include "domain/UBGraphicsWidgetItem.h" #include "domain/UBGraphicsWidgetItem.h"
...@@ -379,6 +384,17 @@ void UBBoardView::tabletEvent (QTabletEvent * event) ...@@ -379,6 +384,17 @@ void UBBoardView::tabletEvent (QTabletEvent * event)
bool acceptEvent = true; bool acceptEvent = true;
#ifdef Q_WS_MAC
//Work around #1388. After selecting annotation tool in desktop mode, annotation view appears on top when
//using Mac OS X. In this case tablet event should send mouse event so as to let user interact with
//stylus palette.
Q_ASSERT(UBApplication::applicationController->uninotesController());
if (UBApplication::applicationController->uninotesController()->drawingView() == this) {
if (UBApplication::applicationController->uninotesController()->desktopPalettePath().contains(event->pos())) {
acceptEvent = false;
}
}
#endif
switch (event->type ()) { switch (event->type ()) {
case QEvent::TabletPress: { case QEvent::TabletPress: {
...@@ -1161,7 +1177,7 @@ UBBoardView::mouseReleaseEvent (QMouseEvent *event) ...@@ -1161,7 +1177,7 @@ UBBoardView::mouseReleaseEvent (QMouseEvent *event)
movingItem = NULL; movingItem = NULL;
} }
else else
if (movingItem && !isCppTool(movingItem)) if (movingItem && (!isCppTool(movingItem) || UBGraphicsCurtainItem::Type == movingItem->type()))
{ {
if (suspendedMousePressEvent) if (suspendedMousePressEvent)
{ {
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#include "board/UBBoardPaletteManager.h" #include "board/UBBoardPaletteManager.h"
#include "domain/UBGraphicsScene.h" #include "domain/UBGraphicsScene.h"
#include "domain/UBGraphicsPolygonItem.h"
#include "UBCustomCaptureWindow.h" #include "UBCustomCaptureWindow.h"
#include "UBWindowCapture.h" #include "UBWindowCapture.h"
...@@ -179,6 +180,25 @@ UBDesktopPalette* UBDesktopAnnotationController::desktopPalette() ...@@ -179,6 +180,25 @@ UBDesktopPalette* UBDesktopAnnotationController::desktopPalette()
return mDesktopPalette; return mDesktopPalette;
} }
QPainterPath UBDesktopAnnotationController::desktopPalettePath() const
{
QPainterPath result;
if (mDesktopPalette && mDesktopPalette->isVisible()) {
result.addRect(mDesktopPalette->geometry());
}
if (mDesktopPenPalette && mDesktopPenPalette->isVisible()) {
result.addRect(mDesktopPenPalette->geometry());
}
if (mDesktopMarkerPalette && mDesktopMarkerPalette->isVisible()) {
result.addRect(mDesktopMarkerPalette->geometry());
}
if (mDesktopEraserPalette && mDesktopEraserPalette->isVisible()) {
result.addRect(mDesktopEraserPalette->geometry());
}
return result;
}
/** /**
* \brief Toggle the visibility of the pen associated palette * \brief Toggle the visibility of the pen associated palette
* @param checked as the visibility state * @param checked as the visibility state
...@@ -821,6 +841,7 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent) ...@@ -821,6 +841,7 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent)
// Here we have to generate a new mask This method is certainly resource // Here we have to generate a new mask This method is certainly resource
// consuming but for the moment this is the only solution that I found. // consuming but for the moment this is the only solution that I found.
mMask = QPixmap(mTransparentDrawingView->width(), mTransparentDrawingView->height()); mMask = QPixmap(mTransparentDrawingView->width(), mTransparentDrawingView->height());
mMask.fill(Qt::transparent);
QPainter p; QPainter p;
...@@ -836,8 +857,8 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent) ...@@ -836,8 +857,8 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent)
} }
if(UBApplication::boardController->paletteManager()->mKeyboardPalette->isVisible()) if(UBApplication::boardController->paletteManager()->mKeyboardPalette->isVisible())
{ {
p.drawRect(UBApplication::boardController->paletteManager()->mKeyboardPalette->geometry().x(), UBApplication::boardController->paletteManager()->mKeyboardPalette->geometry().y(), p.drawRect(UBApplication::boardController->paletteManager()->mKeyboardPalette->geometry().x(), UBApplication::boardController->paletteManager()->mKeyboardPalette->geometry().y(),
UBApplication::boardController->paletteManager()->mKeyboardPalette->width(), UBApplication::boardController->paletteManager()->mKeyboardPalette->height()); UBApplication::boardController->paletteManager()->mKeyboardPalette->width(), UBApplication::boardController->paletteManager()->mKeyboardPalette->height());
} }
if(UBApplication::boardController->paletteManager()->leftPalette()->isVisible()) if(UBApplication::boardController->paletteManager()->leftPalette()->isVisible())
...@@ -897,7 +918,7 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent) ...@@ -897,7 +918,7 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent)
{ {
QGraphicsItem* pCrntItem = allItems.at(i); QGraphicsItem* pCrntItem = allItems.at(i);
if(pCrntItem->isVisible()) if(pCrntItem->isVisible() && pCrntItem->type() == UBGraphicsPolygonItem::Type)
{ {
QPainterPath crntPath = pCrntItem->shape(); QPainterPath crntPath = pCrntItem->shape();
QRectF rect = crntPath.boundingRect(); QRectF rect = crntPath.boundingRect();
...@@ -908,7 +929,7 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent) ...@@ -908,7 +929,7 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent)
annotationPainter.end(); annotationPainter.end();
mTransparentDrawingView->setMask(mMask.createMaskFromColor(Qt::black)); mTransparentDrawingView->setMask(mMask.mask());
} }
else else
{ {
......
...@@ -61,6 +61,7 @@ class UBDesktopAnnotationController : public QObject ...@@ -61,6 +61,7 @@ class UBDesktopAnnotationController : public QObject
void hideWindow(); void hideWindow();
UBDesktopPalette *desktopPalette(); UBDesktopPalette *desktopPalette();
QPainterPath desktopPalettePath() const;
UBBoardView *drawingView(); UBBoardView *drawingView();
void TransparentWidgetResized(); void TransparentWidgetResized();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment