Added Invalidate method for a rect in a window.

This commit is contained in:
rods%netscape.com 1998-10-09 15:20:47 +00:00
parent 64c6bab0fd
commit dff869ceef
2 changed files with 40 additions and 0 deletions

View File

@ -967,6 +967,42 @@ NS_METHOD nsWindow::Invalidate(PRBool aIsSynchronous)
}
//-------------------------------------------------------------------------
//
// Invalidate this component visible area
//
//-------------------------------------------------------------------------
NS_METHOD nsWindow::Invalidate(const nsRect & aRect, PRBool aIsSynchronous)
{
if (mWidget == nsnull) {
return NS_ERROR_FAILURE;
}
if (!XtIsRealized(mWidget)) {
return NS_ERROR_FAILURE;
}
Window win = XtWindow(mWidget);
Display *display = XtDisplay(mWidget);
XEvent evt;
evt.xgraphicsexpose.type = GraphicsExpose;
evt.xgraphicsexpose.send_event = False;
evt.xgraphicsexpose.display = display;
evt.xgraphicsexpose.drawable = win;
evt.xgraphicsexpose.x = aRect.x;
evt.xgraphicsexpose.y = aRect.y;
evt.xgraphicsexpose.width = aRect.width;
evt.xgraphicsexpose.height = aRect.height;
evt.xgraphicsexpose.count = 0;
XSendEvent(display, win, False, ExposureMask, &evt);
XFlush(display);
return NS_OK;
}
//-------------------------------------------------------------------------
//
// Return some native data according to aDataType
@ -1190,6 +1226,8 @@ PRBool nsWindow::ConvertStatus(nsEventStatus aStatus)
NS_IMETHODIMP nsWindow::DispatchEvent(nsGUIEvent* event, nsEventStatus & aStatus)
{
NS_ADDREF(event.widget);
aStatus = nsEventStatus_eIgnore;
if (nsnull != mEventCallback) {
aStatus = (*mEventCallback)(event);
@ -1199,6 +1237,7 @@ NS_IMETHODIMP nsWindow::DispatchEvent(nsGUIEvent* event, nsEventStatus & aStatus
if ((aStatus != nsEventStatus_eIgnore) && (nsnull != mEventListener)) {
aStatus = mEventListener->ProcessEvent(*event);
}
NS_RELEASE(event.widget);
return NS_OK;

View File

@ -107,6 +107,7 @@ public:
virtual nsCursor GetCursor();
NS_IMETHOD SetCursor(nsCursor aCursor);
NS_IMETHOD Invalidate(PRBool aIsSynchronous);
NS_IMETHOD Invalidate(const nsRect &aRect, PRBool aIsSynchronous);
virtual void* GetNativeData(PRUint32 aDataType);
virtual nsIRenderingContext* GetRenderingContext();
NS_IMETHOD SetColorMap(nsColorMap *aColorMap);