mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 11:55:49 +00:00
Bug 1205511 - Make nsBaseDragService::mImage[X|Y] strongly typed. r=enn
--HG-- extra : source : aa1bbf6ed623321f93234dae02fa1c244c702712 extra : histedit_source : d7363ea557eec558109dfe2e36a981c8431b8e75
This commit is contained in:
parent
ea3c8de6e0
commit
f3edd7acf8
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user