EVALUATION
This problem is being addressed in tiger as:
4844303: Applet does not repaint when browser window is resized.
fix for 4844303 needs to be backported to 1.4.2_02
###@###.### 2004-02-24
this seems to be related with 4774159 in the code that handles the
SetObjectRect
the following diff seems to fix the problem
AxControl.cpp
***************
*** 816,822 ****
RECT rcIXect;
BOOL b = IntersectRect(&rcIXect, prcPos, prcClip);
HRGN tempRgn = NULL;
! if (b && !EqualRect(&rcIXect, prcPos))
{
OffsetRect(&rcIXect, -(prcPos->left), -(prcPos->top));
tempRgn = CreateRectRgnIndirect(&rcIXect);
--- 816,822 ----
RECT rcIXect;
BOOL b = IntersectRect(&rcIXect, prcPos, prcClip);
HRGN tempRgn = NULL;
! //if (b && !EqualRect(&rcIXect, prcPos))
{
OffsetRect(&rcIXect, -(prcPos->left), -(prcPos->top));
tempRgn = CreateRectRgnIndirect(&rcIXect);
***************
*** 837,845 ****
// Caused by scrolling, plugin window position will be changed, so we to avoid
// multiple redraw by setting redraw flag to FALSE, only SetWindowPos will redraw
// plugin window.
- ::SetWindowRgn(m_hWnd, tempRgn, FALSE);
::SetWindowPos(m_hWnd, NULL, prcPos->left, prcPos->top,
! size.cx, size.cy, SWP_NOZORDER | SWP_NOACTIVATE | SWP_DEFERERASE);
memcpy(&m_rectPrev, prcPos, sizeof(m_rectPrev));
}
--- 837,846 ----
// Caused by scrolling, plugin window position will be changed, so we to avoid
// multiple redraw by setting redraw flag to FALSE, only SetWindowPos will redraw
// plugin window.
::SetWindowPos(m_hWnd, NULL, prcPos->left, prcPos->top,
! size.cx, size.cy, SWP_NOZORDER | SWP_NOACTIVATE | SWP_DEFERERASE
! | SWP_NOREDRAW);
! ::SetWindowRgn(m_hWnd, tempRgn, TRUE);
memcpy(&m_rectPrev, prcPos, sizeof(m_rectPrev));
}
|