Bug 1205511 - Make nsBaseDragService::mImage[X|Y] strongly typed. r=enn

--HG--
extra : source : aa1bbf6ed623321f93234dae02fa1c244c702712
extra : histedit_source : d7363ea557eec558109dfe2e36a981c8431b8e75
This commit is contained in:
Botond Ballo 2015-09-28 20:44:50 -04:00
parent ea3c8de6e0
commit f3edd7acf8
2 changed files with 17 additions and 19 deletions

View File

@ -57,7 +57,7 @@ nsBaseDragService::nsBaseDragService()
mDragEventDispatchedToChildProcess(false),
mDragAction(DRAGDROP_ACTION_NONE),
mDragActionFromChildProcess(DRAGDROP_ACTION_UNINITIALIZED), mTargetSize(0,0),
mImageX(0), mImageY(0), mScreenX(-1), mScreenY(-1), mSuppressLevel(0),
mScreenX(-1), mScreenY(-1), mSuppressLevel(0),
mInputSource(nsIDOMMouseEvent::MOZ_SOURCE_MOUSE)
{
}
@ -247,8 +247,7 @@ nsBaseDragService::InvokeDragSessionWithImage(nsIDOMNode* aDOMNode,
mHasImage = true;
mDragPopup = nullptr;
mImage = aImage;
mImageX = aImageX;
mImageY = aImageY;
mImageOffset = CSSIntPoint(aImageX, aImageY);
aDragEvent->GetScreenX(&mScreenX);
aDragEvent->GetScreenY(&mScreenY);
@ -273,8 +272,7 @@ nsBaseDragService::InvokeDragSessionWithSelection(nsISelection* aSelection,
mHasImage = true;
mDragPopup = nullptr;
mImage = nullptr;
mImageX = 0;
mImageY = 0;
mImageOffset = CSSIntPoint();
aDragEvent->GetScreenX(&mScreenX);
aDragEvent->GetScreenY(&mScreenY);
@ -328,7 +326,8 @@ nsBaseDragService::OpenDragPopup()
if (mDragPopup) {
nsXULPopupManager* pm = nsXULPopupManager::GetInstance();
if (pm) {
pm->ShowPopupAtScreen(mDragPopup, mScreenX - mImageX, mScreenY - mImageY, false, nullptr);
pm->ShowPopupAtScreen(mDragPopup, mScreenX - mImageOffset.x,
mScreenY - mImageOffset.y, false, nullptr);
}
}
}
@ -385,8 +384,7 @@ nsBaseDragService::EndDragSession(bool aDoneDrag)
mUserCancelled = false;
mDragPopup = nullptr;
mImage = nullptr;
mImageX = 0;
mImageY = 0;
mImageOffset = CSSIntPoint();
mScreenX = -1;
mScreenY = -1;
mEndDragPoint = nsIntPoint(0, 0);
@ -432,8 +430,8 @@ nsBaseDragService::DragMoved(int32_t aX, int32_t aY)
nsIFrame* frame = mDragPopup->GetPrimaryFrame();
if (frame && frame->GetType() == nsGkAtoms::menuPopupFrame) {
nsPresContext* presContext = frame->PresContext();
int32_t x = presContext->DevPixelsToIntCSSPixels(aX) - mImageX;
int32_t y = presContext->DevPixelsToIntCSSPixels(aY) - mImageY;
int32_t x = presContext->DevPixelsToIntCSSPixels(aX) - mImageOffset.x;
int32_t y = presContext->DevPixelsToIntCSSPixels(aY) - mImageOffset.y;
(static_cast<nsMenuPopupFrame *>(frame))->MoveTo(x, y, true);
}
}
@ -470,8 +468,8 @@ nsBaseDragService::DrawDrag(nsIDOMNode* aDOMNode,
*aPresContext = nullptr;
// use a default size, in case of an error.
aScreenDragRect->x = aScreenX - mImageX;
aScreenDragRect->y = aScreenY - mImageY;
aScreenDragRect->x = aScreenX - mImageOffset.x;
aScreenDragRect->y = aScreenY - mImageOffset.y;
aScreenDragRect->width = 1;
aScreenDragRect->height = 1;
@ -520,8 +518,8 @@ nsBaseDragService::DrawDrag(nsIDOMNode* aDOMNode,
int32_t sx = aScreenX, sy = aScreenY;
ConvertToUnscaledDevPixels(*aPresContext, &sx, &sy);
aScreenDragRect->x = sx - mImageX;
aScreenDragRect->y = sy - mImageY;
aScreenDragRect->x = sx - mImageOffset.x;
aScreenDragRect->y = sy - mImageOffset.y;
// check if drag images are disabled
bool enableDragImages = Preferences::GetBool(DRAGIMAGES_PREF, true);
@ -612,8 +610,8 @@ nsBaseDragService::DrawDrag(nsIDOMNode* aDOMNode,
// if an image was specified, reposition the drag rectangle to
// the supplied offset in mImageX and mImageY.
if (mImage) {
aScreenDragRect->x = sx - mImageX;
aScreenDragRect->y = sy - mImageY;
aScreenDragRect->x = sx - mImageOffset.x;
aScreenDragRect->y = sy - mImageOffset.y;
}
return NS_OK;

View File

@ -18,6 +18,7 @@
#include "mozilla/dom/ContentParent.h"
#include "mozilla/dom/HTMLCanvasElement.h"
#include "nsTArray.h"
#include "Units.h"
// translucency level for drag images
#define DRAG_TRANSLUCENCY 0.65
@ -144,9 +145,8 @@ protected:
// used to determine the image to appear on the cursor while dragging
nsCOMPtr<nsIDOMNode> mImage;
// offset of cursor within the image
int32_t mImageX;
int32_t mImageY;
// offset of cursor within the image
mozilla::CSSIntPoint mImageOffset;
// set if a selection is being dragged
nsCOMPtr<nsISelection> mSelection;