native window scrolling fixes. this is not part of the build.

This commit is contained in:
blizzard%redhat.com 1999-07-10 23:20:41 +00:00
Родитель 5d592f0392
Коммит 2e94ee2ee8
3 изменённых файлов: 40 добавлений и 41 удалений

Просмотреть файл

@ -22,6 +22,7 @@
#include "xlibrgb.h"
PRLogModuleInfo *XlibWidgetsLM = PR_NewLogModule("XlibWidgets");
PRLogModuleInfo *XlibScrollingLM = PR_NewLogModule("XlibScrolling");
// set up our static members here.
nsHashtable *nsWidget::window_list = nsnull;
@ -170,15 +171,6 @@ NS_IMETHODIMP nsWidget::Move(PRUint32 aX, PRUint32 aY)
{
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("nsWidget::Move(x, y)\n"));
if (aX < 0) {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("*** x is %d, fixing.\n", aX));
aX = 0;
}
if (aY < 0) {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("*** y is %d, fixing.\n", aY));
aY = 0;
}
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Moving window 0x%lx to %d, %d\n", mBaseWindow, aX, aY));
mBounds.x = aX;
mBounds.y = aY;
@ -371,6 +363,9 @@ NS_IMETHODIMP nsWidget::Show(PRBool bState)
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("state is %d\n", bState));
if (bState) {
if (mIsToplevel) {
printf("Someone just used the show method on the toplevel window.\n");
}
if (mParentWidget) {
((nsWidget *)mParentWidget)->WidgetShow(this);
}
@ -689,64 +684,64 @@ void nsWidget::WidgetPut(nsWidget *aWidget)
void nsWidget::WidgetMove(nsWidget *aWidget)
{
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("nsWidget::WidgetMove()\n"));
XMoveWindow(aWidget->mDisplay, aWidget->mBaseWindow,
aWidget->mBounds.x - mScrollX,
aWidget->mBounds.y - mScrollY);
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("nsWidget::WidgetMove()\n"));
if (PR_TRUE == WidgetVisible(aWidget->mBounds)) {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Widget is visible...\n"));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Widget is visible...\n"));
if (aWidget->mIsShown == PR_TRUE) {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Mapping window 0x%lx...\n", mBaseWindow));
XMoveWindow(aWidget->mDisplay, aWidget->mBaseWindow,
aWidget->mBounds.x,
aWidget->mBounds.y);
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Mapping window 0x%lx...\n", mBaseWindow));
XMapWindow(aWidget->mDisplay, aWidget->mBaseWindow);
}
}
else {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Widget is not visible...\n"));
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Unmapping window 0x%lx...\n", mBaseWindow));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Widget is not visible...\n"));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Unmapping window 0x%lx...\n", mBaseWindow));
XUnmapWindow(aWidget->mDisplay, aWidget->mBaseWindow);
}
}
void nsWidget::WidgetResize(nsWidget *aWidget)
{
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("nsWidget::WidgetResize()\n"));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("nsWidget::WidgetResize()\n"));
// note that we do the resize before a map.
if (PR_TRUE == WidgetVisible(aWidget->mBounds)) {
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Widget is visible...\n"));
XResizeWindow(aWidget->mDisplay, aWidget->mBaseWindow,
aWidget->mBounds.width,
aWidget->mBounds.height);
if (PR_TRUE == WidgetVisible(aWidget->mBounds)) {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Widget is visible...\n"));
if (aWidget->mIsShown == PR_TRUE) {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Mapping window 0x%lx...\n", mBaseWindow));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Mapping window 0x%lx...\n", mBaseWindow));
XMapWindow(aWidget->mDisplay, aWidget->mBaseWindow);
}
}
else {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Widget is not visible...\n"));
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Unmapping window 0x%lx...\n", mBaseWindow));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Widget is not visible...\n"));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Unmapping window 0x%lx...\n", mBaseWindow));
XUnmapWindow(aWidget->mDisplay, aWidget->mBaseWindow);
}
}
void nsWidget::WidgetMoveResize(nsWidget *aWidget)
{
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("nsWidget::WidgetMoveResize()\n"));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("nsWidget::WidgetMoveResize()\n"));
if (PR_TRUE == WidgetVisible(aWidget->mBounds)) {
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Widget is visible...\n"));
XResizeWindow(aWidget->mDisplay,
aWidget->mBaseWindow,
aWidget->mBounds.width, aWidget->mBounds.height);
XMoveWindow(aWidget->mDisplay, aWidget->mBaseWindow,
aWidget->mBounds.x - mScrollX,
aWidget->mBounds.y - mScrollY);
if (PR_TRUE == WidgetVisible(aWidget->mBounds)) {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Widget is visible...\n"));
aWidget->mBounds.x,
aWidget->mBounds.y);
if (aWidget->mIsShown == PR_TRUE) {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Mapping window 0x%lx...\n", mBaseWindow));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Mapping window 0x%lx...\n", mBaseWindow));
XMapWindow(aWidget->mDisplay, aWidget->mBaseWindow);
}
}
else {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Widget is not visible...\n"));
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Unmapping window 0x%lx...\n", mBaseWindow));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Widget is not visible...\n"));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Unmapping window 0x%lx...\n", mBaseWindow));
XUnmapWindow(aWidget->mDisplay, aWidget->mBaseWindow);
}
}
@ -754,12 +749,12 @@ void nsWidget::WidgetMoveResize(nsWidget *aWidget)
void nsWidget::WidgetShow(nsWidget *aWidget)
{
if (PR_TRUE == WidgetVisible(aWidget->mBounds)) {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Mapping window...\n"));
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Mapping window 0x%lx...\n", mBaseWindow));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Mapping window...\n"));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Mapping window 0x%lx...\n", mBaseWindow));
XMapWindow(aWidget->mDisplay, aWidget->mBaseWindow);
}
else {
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("Not Mapping window...\n"));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("Not Mapping window...\n"));
}
}
@ -771,7 +766,9 @@ PRBool nsWidget::WidgetVisible(nsRect &aBounds)
mScrollArea.width = mBounds.width + mScrollX;
mScrollArea.height = mBounds.height + mScrollY;
if (mScrollArea.Intersects(aBounds)) {
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("nsWidget::WidgetVisible(): widget is visible\n"));
return PR_TRUE;
}
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("nsWidget::WidgetVisible(): widget is not visible\n"));
return PR_FALSE;
}

Просмотреть файл

@ -162,6 +162,7 @@ protected:
};
extern PRLogModuleInfo *XlibWidgetsLM;
extern PRLogModuleInfo *XlibScrollingLM;
#endif

Просмотреть файл

@ -129,7 +129,7 @@ NS_IMETHODIMP nsWindow::Update()
NS_IMETHODIMP nsWindow::Scroll(PRInt32 aDx, PRInt32 aDy, nsRect *aClipRect)
{
PR_LOG(XlibWidgetsLM, PR_LOG_DEBUG, ("nsWindow::Scroll()\n"));
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("nsWindow::Scroll()\n"));
mScrollX += aDx;
mScrollY += aDy;
@ -151,6 +151,7 @@ NS_IMETHODIMP nsWindow::Scroll(PRInt32 aDx, PRInt32 aDy, nsRect *aClipRect)
childWindow->GetBounds(bounds);
bounds.x += aDx;
bounds.y += aDy;
PR_LOG(XlibScrollingLM, PR_LOG_DEBUG, ("nsWindow::Scroll moving child to %d, %d\n", bounds.x, bounds.y));
childWindow->Move(bounds.x, bounds.y);
}
} while (NS_SUCCEEDED(children->Next()));