bug 459796. Add optional flags to drawWindow to allow finer control. r=vlad

This commit is contained in:
Stuart Parmenter 2008-10-13 23:29:30 -07:00
parent 4afd09d055
commit e8fef4bbbc
2 changed files with 17 additions and 5 deletions

View File

@ -3347,7 +3347,8 @@ FlushLayoutForTree(nsIDOMWindow* aWindow)
NS_IMETHODIMP
nsCanvasRenderingContext2D::DrawWindow(nsIDOMWindow* aWindow, PRInt32 aX, PRInt32 aY,
PRInt32 aW, PRInt32 aH,
const nsAString& aBGColor)
const nsAString& aBGColor,
PRUint32 flags)
{
NS_ENSURE_ARG(aWindow != nsnull);
@ -3367,9 +3368,10 @@ nsCanvasRenderingContext2D::DrawWindow(nsIDOMWindow* aWindow, PRInt32 aX, PRInt3
// XXX ERRMSG we need to report an error to developers here! (bug 329026)
return NS_ERROR_DOM_SECURITY_ERR;
}
// Flush layout updates
FlushLayoutForTree(aWindow);
if (flags & nsIDOMCanvasRenderingContext2D::DRAWWINDOW_DO_NOT_FLUSH)
FlushLayoutForTree(aWindow);
nsCOMPtr<nsPresContext> presContext;
nsCOMPtr<nsPIDOMWindow> win = do_QueryInterface(aWindow);

View File

@ -60,7 +60,7 @@ interface nsIDOMTextMetrics : nsISupports
readonly attribute float width;
};
[scriptable, uuid(ac35c6a9-bea7-4e5f-85f6-ed43a13c6a2b)]
[scriptable, uuid(66e6d87c-759c-43a7-b3d3-3348180b35df)]
interface nsIDOMCanvasRenderingContext2D : nsISupports
{
// back-reference to the canvas element for which
@ -161,6 +161,12 @@ interface nsIDOMCanvasRenderingContext2D : nsISupports
// ImageData createImageData(in float w, in float h);
void createImageData();
// Show the caret if appropriate when drawing
const unsigned long DRAWWINDOW_DRAW_CARET = 0x01;
// Don't flush pending layout notifications that could otherwise
// be batched up
const unsigned long DRAWWINDOW_DO_NOT_FLUSH = 0x02;
/**
* Renders a region of a window into the canvas. The contents of
* the window's viewport are rendered, ignoring viewport clipping
@ -177,6 +183,9 @@ interface nsIDOMCanvasRenderingContext2D : nsISupports
* transparent/translucent. It is given as a CSS color string
* (e.g., rgb() or rgba()).
*
* @param flags Uused to better control the drawWindow call.
* Flags can be ORed together.
*
* Of course, the rendering obeys the current scale, transform and
* globalAlpha values.
*
@ -194,5 +203,6 @@ interface nsIDOMCanvasRenderingContext2D : nsISupports
* only.
*/
void drawWindow(in nsIDOMWindow window, in long x, in long y,
in long w, in long h, in DOMString bgColor);
in long w, in long h, in DOMString bgColor,
[optional] in unsigned long flags);
};