зеркало из https://github.com/mozilla/pjs.git
Check in some type casts to fix warnings and some changes to support
Photon 2 r=kedl
This commit is contained in:
Родитель
8e465ccd38
Коммит
f0282b3110
|
@ -219,10 +219,12 @@ void nsWindow::DestroyNative(void)
|
|||
mClientWidget = nsnull;
|
||||
}
|
||||
|
||||
|
||||
// destroy all of the children that are nsWindow() classes
|
||||
// preempting the gdk destroy system.
|
||||
DestroyNativeChildren();
|
||||
|
||||
// Call the base class to actually PtDestroy mWidget.
|
||||
nsWidget::DestroyNative();
|
||||
}
|
||||
|
||||
// this function will walk the list of children and destroy them.
|
||||
|
@ -257,14 +259,14 @@ NS_IMETHODIMP nsWindow::Update(void)
|
|||
#if 1
|
||||
return nsWidget::Update();
|
||||
#else
|
||||
printf("nsWindow::Update this=<%p> mUpdateArea=<%p> mUpdateArea->IsEmpty()=<%d>\n", this, mUpdateArea, mUpdateArea->IsEmpty());
|
||||
// printf("nsWindow::Update this=<%p> mUpdateArea=<%p> mUpdateArea->IsEmpty()=<%d>\n", this, mUpdateArea, mUpdateArea->IsEmpty());
|
||||
|
||||
// if (mIsUpdating)
|
||||
// UnqueueDraw();
|
||||
|
||||
if (mWidget == NULL)
|
||||
{
|
||||
printf("nsWindow::Update mWidget is NULL\n");
|
||||
// printf("nsWindow::Update mWidget is NULL\n");
|
||||
NS_ASSERTION(0, "nsWidget::UpdateWidgetDamaged mWidget is NULL");
|
||||
return;
|
||||
}
|
||||
|
@ -272,7 +274,7 @@ NS_IMETHODIMP nsWindow::Update(void)
|
|||
if( !PtWidgetIsRealized( mWidget ))
|
||||
{
|
||||
//NS_ASSERTION(0, "nsWidget::UpdateWidgetDamaged skipping update because widget is not Realized");
|
||||
printf("nsWindow::Update mWidget is not realized\n");
|
||||
// printf("nsWindow::Update mWidget is not realized\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -286,13 +288,13 @@ NS_IMETHODIMP nsWindow::Update(void)
|
|||
|
||||
if (nativeRegion)
|
||||
{
|
||||
printf("nsWindow::Update mWidget before RawDrawFunc\n");
|
||||
// printf("nsWindow::Update mWidget before RawDrawFunc\n");
|
||||
RawDrawFunc(mWidget, PhCopyTiles(nativeRegion));
|
||||
printf("nsWindow::Update mWidget after RawDrawFunc\n");
|
||||
// printf("nsWindow::Update mWidget after RawDrawFunc\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("nsWindow::Update mWidget has NULL nativeRegion\n");
|
||||
// printf("nsWindow::Update mWidget has NULL nativeRegion\n");
|
||||
}
|
||||
#else
|
||||
nsRegionRectSet *regionRectSet = nsnull;
|
||||
|
@ -336,7 +338,7 @@ NS_IMETHODIMP nsWindow::CaptureRollupEvents(nsIRollupListener * aListener,
|
|||
|
||||
if (aDoCapture)
|
||||
{
|
||||
printf("grabbing widget\n");
|
||||
// printf("grabbing widget\n");
|
||||
|
||||
/* Create a pointer region */
|
||||
mIsGrabbing = PR_TRUE;
|
||||
|
@ -349,13 +351,14 @@ NS_IMETHODIMP nsWindow::CaptureRollupEvents(nsIRollupListener * aListener,
|
|||
}
|
||||
else
|
||||
{
|
||||
printf("ungrabbing widget\n");
|
||||
// printf("ungrabbing widget\n");
|
||||
|
||||
// make sure that the grab window is marked as released
|
||||
if (mGrabWindow == this)
|
||||
{
|
||||
mGrabWindow = NULL;
|
||||
}
|
||||
|
||||
mIsGrabbing = PR_FALSE;
|
||||
|
||||
/* Release the pointer region */
|
||||
|
@ -651,8 +654,6 @@ NS_METHOD nsWindow::PreCreateWidget(nsWidgetInitData *aInitData)
|
|||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::PreCreateWidget mClipChildren=<%d> mClipSiblings=<%d> mBorderStyle=<%d> mWindowType=<%d>\n",
|
||||
mClipChildren, mClipSiblings, mBorderStyle, mWindowType));
|
||||
// printf("kedl: nsWindow::PreCreateWidget mClipChildren=<%d> mClipSiblings=<%d> mBorderStyle=<%d> mWindowType=<%d>\n",
|
||||
// mClipChildren, mClipSiblings, mBorderStyle, mWindowType);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -715,6 +716,7 @@ NS_METHOD nsWindow::CreateNative(PtWidget_t *parentWidget)
|
|||
PtSetArg( &arg[arg_count++], Pt_ARG_RESIZE_FLAGS, 0, Pt_RESIZE_XY_BITS );
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_FLAGS, 0 /*Pt_HIGHLIGHTED*/, Pt_HIGHLIGHTED );
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_BORDER_WIDTH, 0, 0 );
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_FILL_COLOR, Pg_RED, 0 );
|
||||
//PtSetArg( &arg[arg_count++], Pt_ARG_TOP_BORDER_COLOR, Pg_RED, 0 );
|
||||
//PtSetArg( &arg[arg_count++], Pt_ARG_BOT_BORDER_COLOR, Pg_RED, 0 );
|
||||
PtSetArg( &arg[arg_count++], RDC_DRAW_FUNC, RawDrawFunc, 0 );
|
||||
|
@ -770,7 +772,14 @@ NS_METHOD nsWindow::CreateNative(PtWidget_t *parentWidget)
|
|||
}
|
||||
|
||||
// Remember frame size for later use...
|
||||
#ifdef PHOTON1_ONLY
|
||||
PtFrameSize( render_flags, 0, &mFrameLeft, &mFrameTop, &mFrameRight, &mFrameBottom );
|
||||
#else
|
||||
#endif
|
||||
|
||||
// Did KEDL add this to fix the rip in the upper right hand corner?
|
||||
mFrameLeft=2;
|
||||
mFrameRight=2;
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::CreateNative Frame size L,T,R,B=(%d,%d,%d,%d)\n",
|
||||
mFrameLeft, mFrameTop, mFrameRight, mFrameBottom ));
|
||||
|
@ -789,7 +798,7 @@ NS_METHOD nsWindow::CreateNative(PtWidget_t *parentWidget)
|
|||
|
||||
if( mWindowType == eWindowType_popup )
|
||||
{
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_FLAGS, Pt_DISJOINT, (Pt_HIGHLIGHTED | Pt_DISJOINT | Pt_GETS_FOCUS));
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_FLAGS, 0, (Pt_HIGHLIGHTED | Pt_GETS_FOCUS));
|
||||
}
|
||||
|
||||
if( parentWidget )
|
||||
|
@ -818,7 +827,7 @@ NS_METHOD nsWindow::CreateNative(PtWidget_t *parentWidget)
|
|||
|
||||
PtRawCallback_t callback;
|
||||
callback.event_mask = sense;
|
||||
callback.event_f = (void *) MenuRegionCallback;
|
||||
callback.event_f = MenuRegionCallback;
|
||||
callback.data = (ApInfo_t *) this;
|
||||
|
||||
PhRid_t rid;
|
||||
|
@ -844,7 +853,8 @@ printf("nsWindow::CreateNative 1st region area=(%d,%d,%d,%d)\n", area.pos.x, are
|
|||
PtSetArg( &args[arg_count2++], Pt_ARG_REGION_FIELDS, fields, fields );
|
||||
PtSetArg( &args[arg_count2++], Pt_ARG_REGION_FLAGS, Ph_FORCE_FRONT | Ph_FORCE_BOUNDARY, Ph_FORCE_FRONT | Ph_FORCE_BOUNDARY);
|
||||
PtSetArg( &args[arg_count2++], Pt_ARG_REGION_SENSE, sense, sense );
|
||||
PtSetArg( &args[arg_count2++], Pt_ARG_REGION_OPAQUE, Ph_EV_BOUNDARY, Ph_EV_BOUNDARY );
|
||||
PtSetArg( &args[arg_count2++], Pt_ARG_REGION_OPAQUE, Ph_EV_BOUNDARY, Ph_EV_BOUNDARY);
|
||||
//PtSetArg( &args[arg_count2++], Pt_ARG_REGION_OPAQUE, Ph_EV_BOUNDARY|sense, Ph_EV_BOUNDARY|sense);
|
||||
PtSetArg( &args[arg_count2++], Pt_ARG_AREA, &area, 0 );
|
||||
PtSetArg( &args[arg_count2++], Pt_ARG_FILL_COLOR, Pg_TRANSPARENT, 0 );
|
||||
PtSetArg( &args[arg_count2++], Pt_ARG_RAW_CALLBACKS, &callback, 1 );
|
||||
|
@ -856,8 +866,12 @@ printf("nsWindow::CreateNative 1st region area=(%d,%d,%d,%d)\n", area.pos.x, are
|
|||
PtSetArg( &arg[arg_count++], Pt_ARG_REGION_PARENT, mMenuRegion->rid, 0 );
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_REGION_FIELDS, fields, fields );
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_REGION_FLAGS, Ph_FORCE_FRONT, Ph_FORCE_FRONT );
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_REGION_SENSE, sense | Ph_EV_DRAG|Ph_EV_EXPOSE|Ph_EV_BUT_RELEASE, sense | Ph_EV_DRAG|Ph_EV_EXPOSE|Ph_EV_BUT_RELEASE );
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_REGION_OPAQUE, sense | Ph_EV_DRAG|Ph_EV_EXPOSE|Ph_EV_BUT_RELEASE|Ph_EV_DRAW, sense |Ph_EV_DRAG|Ph_EV_EXPOSE|Ph_EV_BUT_RELEASE|Ph_EV_DRAW);
|
||||
// PtSetArg( &arg[arg_count++], Pt_ARG_REGION_SENSE, sense | Ph_EV_DRAG|Ph_EV_EXPOSE|Ph_EV_BUT_RELEASE, sense | Ph_EV_DRAG|Ph_EV_EXPOSE|Ph_EV_BUT_RELEASE );
|
||||
// PtSetArg( &arg[arg_count++], Pt_ARG_REGION_OPAQUE, sense | Ph_EV_DRAG|Ph_EV_EXPOSE|Ph_EV_BUT_RELEASE|Ph_EV_DRAW, sense |Ph_EV_DRAG|Ph_EV_EXPOSE|Ph_EV_BUT_RELEASE|Ph_EV_DRAW);
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_REGION_SENSE, sense | Ph_EV_DRAG|Ph_EV_EXPOSE, sense | Ph_EV_DRAG|Ph_EV_EXPOSE);
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_REGION_OPAQUE, sense | Ph_EV_DRAG|Ph_EV_EXPOSE|Ph_EV_DRAW, sense |Ph_EV_DRAG|Ph_EV_EXPOSE|Ph_EV_DRAW);
|
||||
|
||||
|
||||
mWidget = PtCreateWidget( PtRegion, parentWidget, arg_count, arg);
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::CreateNative PtRegion = <%p>\n", mWidget));
|
||||
|
@ -871,6 +885,7 @@ printf("nsWindow::CreateNative 1st region area=(%d,%d,%d,%d)\n", area.pos.x, are
|
|||
PtSetParentWidget( nsnull );
|
||||
mWidget = PtCreateWidget( PtWindow, nsnull, arg_count, arg );
|
||||
#else
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_FILL_COLOR, Pg_BLUE, 0 );
|
||||
mWidget = PtCreateWidget( PtWindow, parentWidget, arg_count, arg );
|
||||
#endif
|
||||
}
|
||||
|
@ -894,13 +909,18 @@ printf("nsWindow::CreateNative 1st region area=(%d,%d,%d,%d)\n", area.pos.x, are
|
|||
if( mWindowType == eWindowType_popup )
|
||||
{
|
||||
PtSetArg( &arg[arg_count++], RDC_DRAW_FUNC, RawDrawFunc, 0 );
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_FLAGS, Pt_DISJOINT, (Pt_HIGHLIGHTED | Pt_DISJOINT | Pt_GETS_FOCUS));
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_FLAGS, 0, (Pt_HIGHLIGHTED | Pt_GETS_FOCUS));
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_WINDOW_MANAGED_FLAGS, Ph_WM_FFRONT, Ph_WM_FFRONT );
|
||||
mClientWidget = PtCreateWidget( PtRawDrawContainer, mWidget, arg_count, arg );
|
||||
}
|
||||
else
|
||||
{
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_FLAGS, 0, Pt_HIGHLIGHTED );
|
||||
#if defined(DEBUG) && 1
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_FILL_COLOR, Pg_YELLOW, 0 );
|
||||
#else
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_FILL_COLOR, Pg_TRANSPARENT, 0 );
|
||||
#endif
|
||||
mClientWidget = PtCreateWidget( PtContainer, mWidget,arg_count, arg );
|
||||
}
|
||||
|
||||
|
@ -1118,6 +1138,7 @@ NS_METHOD nsWindow::Scroll(PRInt32 aDx, PRInt32 aDy, nsRect *aClipRect)
|
|||
// Apply passed-in clipping, if available
|
||||
// REVISIT - this wont work, PhBlits ignore clipping
|
||||
|
||||
#if 1
|
||||
if( aClipRect )
|
||||
{
|
||||
clip.ul.x = aClipRect->x;
|
||||
|
@ -1126,6 +1147,7 @@ NS_METHOD nsWindow::Scroll(PRInt32 aDx, PRInt32 aDy, nsRect *aClipRect)
|
|||
clip.lr.y = clip.ul.y + aClipRect->height - 1;
|
||||
PgSetUserClip( &clip );
|
||||
}
|
||||
#endif
|
||||
|
||||
// Make sure video buffer is up-to-date
|
||||
PgFlush();
|
||||
|
@ -1139,6 +1161,7 @@ NS_METHOD nsWindow::Scroll(PRInt32 aDx, PRInt32 aDy, nsRect *aClipRect)
|
|||
while( tile )
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::Scroll tile (%i,%i,%i,%i)\n", tile->rect.ul.x, tile->rect.ul.y, tile->rect.lr.x, tile->rect.lr.y ));
|
||||
printf("nsWindow::Scroll tile (%i,%i,%i,%i)\n", tile->rect.ul.x, tile->rect.ul.y, tile->rect.lr.x, tile->rect.lr.y );
|
||||
PhBlit( rid, &tile->rect, &offset );
|
||||
tile = tile->next;
|
||||
}
|
||||
|
@ -1370,7 +1393,8 @@ NS_IMETHODIMP nsWindow::Resize(PRInt32 aWidth, PRInt32 aHeight, PRBool aRepaint)
|
|||
sevent.message = NS_SIZE;
|
||||
sevent.widget = this;
|
||||
sevent.eventStructType = NS_SIZE_EVENT;
|
||||
sevent.windowSize = new nsRect (0, 0, aWidth, aHeight);
|
||||
sevent.windowSize = new nsRect (0, 0, aWidth+2, aHeight); // kedl1, fix so throbber area is right
|
||||
// size; only works first time though...
|
||||
sevent.point.x = 0;
|
||||
sevent.point.y = 0;
|
||||
sevent.mWinWidth = aWidth;
|
||||
|
@ -1456,6 +1480,15 @@ NS_METHOD nsWindow::Show(PRBool bState)
|
|||
if ((mMenuRegion) && (!PtWidgetIsRealized(mMenuRegion)))
|
||||
{
|
||||
PtRealizeWidget(mMenuRegion);
|
||||
|
||||
short arg_count=0;
|
||||
PtArg_t arg[2];
|
||||
|
||||
#if 0
|
||||
/* Now that the MenuRegion is Realized make the small menu a child in front of the big menu */
|
||||
PtSetArg( &arg[arg_count++], Pt_ARG_REGION_PARENT, mMenuRegion->rid, 0 );
|
||||
PtSetResources(mWidget, arg_count, arg);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1513,6 +1546,7 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
do {
|
||||
PhRect_t rect = top->rect;
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::RawDrawFunc photon damage %d rect=<%d,%d,%d,%d> next=<%p>\n", index++,rect.ul.x,rect.ul.y,rect.lr.x,rect.lr.y, top->next));
|
||||
// printf("nsWindow::%p RawDrawFunc photon damage %d rect=<%d,%d,%d,%d> next=<%p>\n", pWidget,index++,rect.ul.x,rect.ul.y,rect.lr.x,rect.lr.y, top->next);
|
||||
top=top->next;
|
||||
} while (top);
|
||||
}
|
||||
|
@ -1530,7 +1564,7 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::RawDrawFunc pWin->mContext is NULL!\n"));
|
||||
NS_ASSERTION(pWin->mContext, "nsWindow::RawDrawFunc pWin->mContext is NULL!");
|
||||
//return;
|
||||
return;
|
||||
}
|
||||
|
||||
// This prevents redraws while any window is resizing, ie there are
|
||||
|
@ -1559,8 +1593,8 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::RawDrawFunc mBounds=<%d,%d,%d,%d>\n", pWin->mBounds.x, pWin->mBounds.y, pWin->mBounds.width, pWin->mBounds.height));
|
||||
|
||||
/* Add the X,Y of area to offset to fix the throbber drawing in Viewer */
|
||||
offset.x += area.pos.x;
|
||||
offset.y += area.pos.y;
|
||||
//offset.x += area.pos.x;
|
||||
//offset.y += area.pos.y;
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::RawDrawFunc offset+area =<%d,%d>\n", offset.x, offset.y));
|
||||
|
||||
|
@ -1603,22 +1637,37 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
|
||||
#if 1
|
||||
{
|
||||
/* Print out the Photon Damage tiles */
|
||||
/* Subtracting one from X and Y of every damage tile */
|
||||
PhTile_t *top = damage;
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::RawDrawFunc Subtracting one from every damage tile:\n"));
|
||||
while(top)
|
||||
{
|
||||
/*
|
||||
if (top->rect.ul.x != 0)
|
||||
{
|
||||
top->rect.ul.x--;
|
||||
}
|
||||
top->rect.ul.x-=1;
|
||||
if (top->rect.ul.y != 0)
|
||||
top->rect.ul.y-=1;
|
||||
*/
|
||||
top->rect.lr.x++;
|
||||
top->rect.lr.y++;
|
||||
top=top->next;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* This could be leaking some memory */
|
||||
new_damage = PhClipTilings(PhCopyTiles(damage->next), PhCopyTiles(clip_tiles), NULL);
|
||||
PhTile_t *tiles2 = PhCopyTiles(damage->next);
|
||||
PhTile_t *tile3 = PhRectsToTiles(&damage->rect, 1);
|
||||
tiles2 = PhIntersectTilings(tiles2, tile3, NULL);
|
||||
//df
|
||||
// new_damage = PhClipTilings(PhCopyTiles(damage->next), PhCopyTiles(clip_tiles), NULL);
|
||||
// new_damage = PhCoalesceTiles( PhMergeTiles (PhSortTiles( new_damage )));
|
||||
|
||||
/* Change from Window releative to widget realtive coordinates */
|
||||
PhDeTranslateTiles(tiles2,&offset);
|
||||
|
||||
/* new_damage is the same as tiles2... I need to release it later */
|
||||
new_damage = PhClipTilings(tiles2, PhCopyTiles(clip_tiles), NULL);
|
||||
new_damage = PhCoalesceTiles( PhMergeTiles (PhSortTiles( new_damage )));
|
||||
|
||||
if (new_damage == nsnull)
|
||||
|
@ -1638,6 +1687,7 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
{
|
||||
PhRect_t rect = top->rect;
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::RawDrawFunc photon damage %d rect=<%d,%d,%d,%d> next=<%p>\n", index++,rect.ul.x,rect.ul.y,rect.lr.x,rect.lr.y, top->next));
|
||||
// printf ("nsWindow::RawDrawFunc photon damage %d rect=<%d,%d,%d,%d> next=<%p>\n", index++,rect.ul.x,rect.ul.y,rect.lr.x,rect.lr.y, top->next);
|
||||
top=top->next;
|
||||
}
|
||||
}
|
||||
|
@ -1684,7 +1734,7 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
//dmg = damage; /* if using my DoPaint that call RawDrawFunc directly */
|
||||
dmg = new_damage;
|
||||
//dmg = BoundingDmg;
|
||||
|
||||
|
||||
while(dmg)
|
||||
{
|
||||
/* Copy the Damage Rect */
|
||||
|
@ -1694,17 +1744,21 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
rect.lr.y = dmg->rect.lr.y;
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::RawDrawFunc damage rect = <%d,%d,%d,%d>\n", rect.ul.x,rect.ul.y,rect.lr.x,rect.lr.y));
|
||||
// printf("nsWindow::RawDrawFunc damage rect = <%d,%d,%d,%d>\n", rect.ul.x,rect.ul.y,rect.lr.x,rect.lr.y);
|
||||
|
||||
/* Do I need to Translate it?? If so by what? offset? offset+area?*/
|
||||
#if 1
|
||||
#ifdef PHOTON1_ONLY
|
||||
PtDeTranslateRect(&rect, &offset);
|
||||
#else
|
||||
#if 0
|
||||
rect.ul.x -= offset.x;
|
||||
rect.ul.y -= offset.y;
|
||||
rect.ul.y -= offset.y;
|
||||
rect.lr.x -= offset.x;
|
||||
rect.lr.y -= offset.y;
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
rect.ul.x -= area.pos.x;
|
||||
rect.ul.y -= area.pos.y;
|
||||
rect.lr.x -= area.pos.x;
|
||||
rect.lr.y -= area.pos.y;
|
||||
#endif
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::RawDrawFunc damage rect after translate = <%d,%d,%d,%d>\n", rect.ul.x,rect.ul.y,rect.lr.x,rect.lr.y));
|
||||
|
@ -1713,6 +1767,7 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
if(( rect.ul.x >= area.size.w ) || ( rect.ul.y >= area.size.h ) || ( rect.lr.x < 0 ) || ( rect.lr.y < 0 ))
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::RawDrawFunc damage tile is not within our bounds, do nothing\n"));
|
||||
// printf("nsWindow::RawDrawFunc damage tile is not within our bounds, do nothing\n");
|
||||
|
||||
#if 0
|
||||
/* Move to the next Damage Tile */
|
||||
|
@ -1744,6 +1799,8 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
continue;
|
||||
}
|
||||
|
||||
|
||||
#if 1
|
||||
/* Re-Setup Paint Event */
|
||||
pWin->InitEvent(pev, NS_PAINT);
|
||||
pev.eventStructType = NS_PAINT_EVENT;
|
||||
|
@ -1766,6 +1823,61 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
/* You can turn off most drawing if you take this out */
|
||||
result = pWin->DispatchWindowEvent(&pev);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
nsDmg.x = rect.ul.x;
|
||||
nsDmg.y = rect.ul.y;
|
||||
nsDmg.width = (rect.lr.x - rect.ul.x + 1)/2;
|
||||
nsDmg.height = rect.lr.y - rect.ul.y + 1;
|
||||
|
||||
pWin->InitEvent(pev, NS_PAINT);
|
||||
pev.eventStructType = NS_PAINT_EVENT;
|
||||
pev.point.x = nsDmg.x;
|
||||
pev.point.y = nsDmg.y;
|
||||
pev.rect = new nsRect(nsDmg.x, nsDmg.y, nsDmg.width, nsDmg.height);
|
||||
|
||||
if (pev.renderingContext)
|
||||
{
|
||||
ClipRegion = pWin->GetRegion();
|
||||
ClipRegion->SetTo(nsDmg.x, nsDmg.y, nsDmg.width, nsDmg.height);
|
||||
pev.renderingContext->SetClipRegion(NS_STATIC_CAST(const nsIRegion &, *(pWin->mUpdateArea)),
|
||||
// pev.renderingContext->SetClipRegion(NS_STATIC_CAST(const nsIRegion &, *(ClipRegion)),
|
||||
nsClipCombine_kReplace, aClipState);
|
||||
|
||||
/* Not sure WHAT this sould be, probably nsDmg rect... */
|
||||
// pev.renderingContext->SetClipRegion(NS_STATIC_CAST(const nsIRegion &, *(ClipRegion)),
|
||||
// pev.renderingContext->SetClipRegion(NS_STATIC_CAST(const nsIRegion &, *(pWin->mUpdateArea)),
|
||||
// nsClipCombine_kReplace, aClipState);
|
||||
|
||||
/* You can turn off most drawing if you take this out */
|
||||
result = pWin->DispatchWindowEvent(&pev);
|
||||
}
|
||||
|
||||
nsDmg.x += nsDmg.width;
|
||||
|
||||
pWin->InitEvent(pev, NS_PAINT);
|
||||
pev.eventStructType = NS_PAINT_EVENT;
|
||||
pev.point.x = nsDmg.x;
|
||||
pev.point.y = nsDmg.y;
|
||||
pev.rect = new nsRect(nsDmg.x, nsDmg.y, nsDmg.width, nsDmg.height);
|
||||
|
||||
if (pev.renderingContext)
|
||||
{
|
||||
ClipRegion = pWin->GetRegion();
|
||||
ClipRegion->SetTo(nsDmg.x, nsDmg.y, nsDmg.width, nsDmg.height);
|
||||
pev.renderingContext->SetClipRegion(NS_STATIC_CAST(const nsIRegion &, *(ClipRegion)),
|
||||
nsClipCombine_kReplace, aClipState);
|
||||
|
||||
/* Not sure WHAT this sould be, probably nsDmg rect... */
|
||||
// pev.renderingContext->SetClipRegion(NS_STATIC_CAST(const nsIRegion &, *(ClipRegion)),
|
||||
// pev.renderingContext->SetClipRegion(NS_STATIC_CAST(const nsIRegion &, *(pWin->mUpdateArea)),
|
||||
// nsClipCombine_kReplace, aClipState);
|
||||
|
||||
/* You can turn off most drawing if you take this out */
|
||||
result = pWin->DispatchWindowEvent(&pev);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Move to the next Damage Tile */
|
||||
dmg = dmg->next;
|
||||
|
@ -1773,7 +1885,9 @@ void nsWindow::RawDrawFunc( PtWidget_t * pWidget, PhTile_t * damage )
|
|||
|
||||
NS_RELEASE(pev.renderingContext);
|
||||
}
|
||||
|
||||
|
||||
PhFreeTiles(dmg);
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::RawDrawFunc End of RawDrawFunc\n"));
|
||||
}
|
||||
|
||||
|
@ -1915,7 +2029,7 @@ NS_METHOD nsWindow::SetWindowClipping( PhTile_t *damage, PhPoint_t &offset )
|
|||
PtWidget_t *w;
|
||||
PhArea_t *area;
|
||||
PtArg_t arg;
|
||||
PtWidget_t *aWidget = GetNativeData(NS_NATIVE_WIDGET);
|
||||
PtWidget_t *aWidget = (PtWidget_t *)GetNativeData(NS_NATIVE_WIDGET);
|
||||
PhTile_t *new_damage = nsnull;
|
||||
|
||||
clip_tiles = last = nsnull;
|
||||
|
@ -2171,7 +2285,7 @@ PhTile_t *nsWindow::GetWindowClipping(PhPoint_t &offset)
|
|||
PtWidget_t *w;
|
||||
PhArea_t *area;
|
||||
PtArg_t arg;
|
||||
PtWidget_t *aWidget = GetNativeData(NS_NATIVE_WIDGET);
|
||||
PtWidget_t *aWidget = (PtWidget_t *)GetNativeData(NS_NATIVE_WIDGET);
|
||||
|
||||
PhPoint_t w_offset;
|
||||
PhArea_t w_area;
|
||||
|
@ -2189,7 +2303,11 @@ PhTile_t *nsWindow::GetWindowClipping(PhPoint_t &offset)
|
|||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::GetWindowClipping clipping children...\n"));
|
||||
|
||||
for( w=PtWidgetChildFront( aWidget ); w; w=PtWidgetBrotherBehind( w ))
|
||||
PtWidgetOffset(w=PtWidgetChildFront( aWidget ), &w_offset);
|
||||
w_offset.x -= offset.x;
|
||||
w_offset.y -= offset.y;
|
||||
|
||||
for(; w; w=PtWidgetBrotherBehind( w ))
|
||||
{
|
||||
long flags = PtWidgetFlags(w);
|
||||
|
||||
|
@ -2201,12 +2319,12 @@ PhTile_t *nsWindow::GetWindowClipping(PhPoint_t &offset)
|
|||
PtWidgetArea(w, &w_area);
|
||||
PtWidgetDim(w, &w_dim);
|
||||
|
||||
PtWidgetOffset(w, &w_offset);
|
||||
PtGetAbsPosition(w, &abs_pos_x, &abs_pos_y);
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::GetWindowClipping clipping children w=<%p> offset=<%d,%d> Abs Pos=<%d,%d> w_area=<%d,%d,%d,%d>\n", w, w_offset.x, w_offset.y, abs_pos_x, abs_pos_y, w_area.pos.x, w_area.pos.y, w_area.size.w, w_area.size.h));
|
||||
|
||||
if (flags & Pt_OPAQUE)
|
||||
/* Is the widget OPAQUE and Window is not a disjoint window */
|
||||
if ((flags & Pt_OPAQUE) && (w != PtFindDisjoint(w)))
|
||||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::GetWindowClipping widget w=<%p> is opaque IsRealized=<%d>\n", w, PtWidgetIsRealized(w)));
|
||||
if ( PtWidgetIsRealized( w ))
|
||||
|
@ -2223,19 +2341,22 @@ PhTile_t *nsWindow::GetWindowClipping(PhPoint_t &offset)
|
|||
tile->rect.lr.y = abs_pos_y + w_dim.h - 1;
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
#if 0
|
||||
/* working! */
|
||||
/* this is the same as widget->extent for Photon2 */
|
||||
tile->rect.ul.x = area->pos.x;
|
||||
tile->rect.ul.y = area->pos.y;
|
||||
tile->rect.lr.x = area->pos.x + area->size.w - 1;
|
||||
tile->rect.lr.y = area->pos.y + area->size.h - 1;
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
#if 1
|
||||
/*new offset working! */
|
||||
/* this is the same as widget->extent for Photon2 */
|
||||
tile->rect.ul.x = area->pos.x + w_offset.x;
|
||||
tile->rect.ul.y = area->pos.y + w_offset.y;
|
||||
tile->rect.lr.x = area->pos.x + area->size.w - 1;
|
||||
tile->rect.lr.y = area->pos.y + area->size.h - 1;
|
||||
tile->rect.lr.x = tile->rect.ul.x + area->size.w - 1;
|
||||
tile->rect.lr.y = tile->rect.ul.y + area->size.h - 1;
|
||||
#endif
|
||||
|
||||
tile->next = NULL;
|
||||
|
@ -2259,6 +2380,7 @@ PhTile_t *nsWindow::GetWindowClipping(PhPoint_t &offset)
|
|||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
if ( mClipSiblings )
|
||||
{
|
||||
PtWidget_t *node = aWidget;
|
||||
|
@ -2309,6 +2431,7 @@ PhTile_t *nsWindow::GetWindowClipping(PhPoint_t &offset)
|
|||
node = PtWidgetParent( node );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
{
|
||||
|
@ -2338,7 +2461,7 @@ int nsWindow::ResizeHandler( PtWidget_t *widget, void *data, PtCallbackInfo_t *c
|
|||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::ResizeHandler for someWindow=<%p>\n", someWindow));
|
||||
|
||||
if( someWindow )
|
||||
if( someWindow && extents) // kedl
|
||||
{
|
||||
rect.x = extents->ul.x;
|
||||
rect.y = extents->ul.y;
|
||||
|
@ -2346,9 +2469,11 @@ int nsWindow::ResizeHandler( PtWidget_t *widget, void *data, PtCallbackInfo_t *c
|
|||
rect.height = extents->lr.y - rect.y + 1;
|
||||
|
||||
/* This enables the resize holdoff */
|
||||
someWindow->ResizeHoldOff(); /* commenting this out sometimes makes pref. dlg draw */
|
||||
|
||||
if (PtWidgetIsRealized(widget))
|
||||
{
|
||||
someWindow->ResizeHoldOff(); /* commenting this out sometimes makes pref. dlg draw */
|
||||
someWindow->OnResize( rect );
|
||||
}
|
||||
}
|
||||
return( Pt_CONTINUE );
|
||||
}
|
||||
|
@ -2478,14 +2603,8 @@ void nsWindow::RemoveResizeWidget()
|
|||
}
|
||||
|
||||
|
||||
static int count=100;
|
||||
int nsWindow::ResizeWorkProc( void *data )
|
||||
{
|
||||
|
||||
/* Awful HACK that needs to be removed.. */
|
||||
// if (count) {count--; return Pt_CONTINUE;}
|
||||
// count=100;
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::ResizeWorkProc data=<%p> mResizeQueueInited=<%d>\n", data, mResizeQueueInited ));
|
||||
|
||||
if ( mResizeQueueInited )
|
||||
|
@ -2595,11 +2714,18 @@ NS_METHOD nsWindow::Move(PRInt32 aX, PRInt32 aY)
|
|||
|
||||
if (myWindowParent)
|
||||
{
|
||||
int FrameLeft, FrameTop, FrameBottom;
|
||||
short int FrameLeft, FrameTop, FrameBottom;
|
||||
PhArea_t area;
|
||||
|
||||
myWindowParent->GetFrameSize(&FrameLeft, NULL, &FrameTop, &FrameBottom);
|
||||
//printf("nsWindow:: Move Popup offset=<%d,%d>\n", aX, aY);
|
||||
|
||||
FrameLeft = FrameTop = FrameBottom = 0;
|
||||
//myWindowParent->GetFrameSize(&FrameLeft, NULL, &FrameTop, &FrameBottom);
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::Move parent frame size left=<%d> top=<%d>\n", FrameLeft, FrameTop));
|
||||
|
||||
//PtGetAbsPosition(mWidget->parent, &FrameLeft, &FrameTop);
|
||||
FrameLeft = 5; /* 5 looks the best? */
|
||||
FrameTop=21;
|
||||
PtWidgetArea(last, &area);
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::Move parent area=<%d,%d,%d,%d>\n", area.pos.x,area.pos.y,area.size.w,area.size.h));
|
||||
|
||||
|
@ -2608,7 +2734,7 @@ NS_METHOD nsWindow::Move(PRInt32 aX, PRInt32 aY)
|
|||
aX = aX + FrameLeft + area.pos.x;
|
||||
|
||||
/* Subtract FrameBottom for Augusta/Photon 2 PHOTON BUG */
|
||||
aY = aY + FrameTop - FrameBottom + area.pos.y;
|
||||
aY = aY + FrameTop + area.pos.y;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2626,7 +2752,7 @@ NS_METHOD nsWindow::Move(PRInt32 aX, PRInt32 aY)
|
|||
aX += console.ul.x;
|
||||
aY += console.ul.y;
|
||||
|
||||
printf("nsWindow::Move toplevel console=(%d,%d) total=(%d,%d)\n", console.ul.x, console.ul.y, aX, aY);
|
||||
//printf("nsWindow::Move toplevel console=(%d,%d) total=(%d,%d)\n", console.ul.x, console.ul.y, aX, aY);
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::Move toplevel console=(%d,%d) total=(%d,%d)\n", console.ul.x, console.ul.y, aX, aY));
|
||||
}
|
||||
#endif
|
||||
|
@ -2657,6 +2783,7 @@ NS_METHOD nsWindow::ModalEventFilter(PRBool aRealEvent, void *aEvent,
|
|||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::ModalEventFilter aEvent=<%p> - Not Implemented.\n", aEvent));
|
||||
|
||||
//printf ("kedl: modal event filter %d %d %p.......................................\n",aRealEvent,aForWindow,aEvent);
|
||||
*aForWindow = PR_TRUE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -2672,16 +2799,19 @@ int nsWindow::MenuRegionCallback( PtWidget_t *widget, ApInfo_t *apinfo, PtCallba
|
|||
widget = widget, apinfo = apinfo, cbinfo = cbinfo;
|
||||
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::MenuRegionCallback this=<%p> widget=<%p> apinfo=<%p>\n", pWin, widget, apinfo));
|
||||
printf("nsWindow::MenuRegionCallback this=<%p> widget=<%p> apinfo=<%p> pWin2=<%p>\n", pWin, widget, apinfo, pWin2);
|
||||
|
||||
#if defined(DEBUG) && 1
|
||||
// printf("nsWindow::MenuRegionCallback this=<%p> widget=<%p> apinfo=<%p> pWin2=<%p>\n", pWin, widget, apinfo, pWin2);
|
||||
// printf("nsWindow::MenuRegionCallback cbinfo->reason=<%d>\n", cbinfo->reason);
|
||||
// printf("nsWindow::MenuRegionCallback cbinfo->subtype=<%d>\n", cbinfo->reason_subtype);
|
||||
// printf("nsWindow::MenuRegionCallback cbinfo->cbdata=<%d>\n", cbinfo->cbdata);
|
||||
// printf("nsWindow::MenuRegionCallback event->type=<%d>\n", event->type);
|
||||
#endif
|
||||
|
||||
if ( (event->type == Ph_EV_BUT_PRESS) || (event->type == Ph_EV_KEY) )
|
||||
{
|
||||
//printf("nsWindow::MenuRegionCallback event is Ph_EV_BUT_PRESS | Ph_EV_KEY\n");
|
||||
//printf("nsWindow::MenuRegionCallback pWin->gRollupWidget=<%p> pWin->gRollupListener=<%p>\n", pWin->gRollupWidget, pWin->gRollupListener);
|
||||
// printf("nsWindow::MenuRegionCallback event is Ph_EV_BUT_PRESS | Ph_EV_KEY\n");
|
||||
// printf("nsWindow::MenuRegionCallback pWin->gRollupWidget=<%p> pWin->gRollupListener=<%p>\n", pWin->gRollupWidget, pWin->gRollupListener);
|
||||
|
||||
if (pWin->gRollupWidget && pWin->gRollupListener)
|
||||
{
|
||||
|
@ -2712,14 +2842,15 @@ NS_IMETHODIMP nsWindow::SetModal(PRBool aModal)
|
|||
{
|
||||
PR_LOG(PhWidLog, PR_LOG_DEBUG, ("nsWindow::SetModal this=<%p> mModalCount=<%d> mWidget=<%p>\n", this, mModalCount, mWidget));
|
||||
nsresult res = NS_ERROR_FAILURE;
|
||||
|
||||
|
||||
//printf ("kedl: window set modal.........................................................................\n");
|
||||
if (!mWidget)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
PtWidget_t *toplevel = PtFindDisjoint(mWidget);
|
||||
if (!toplevel)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
|
||||
if (aModal)
|
||||
{
|
||||
if (mModalCount != -1)
|
||||
|
|
Загрузка…
Ссылка в новой задаче