X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a16a9bf350fc82a690ecea95a75548fd0cd70fcf..5d33ed2c6bc3065bf9dc77742da6c924b9e00fa5:/src/motif/window.cpp diff --git a/src/motif/window.cpp b/src/motif/window.cpp index 56072c4c0e..204e0a0bff 100644 --- a/src/motif/window.cpp +++ b/src/motif/window.cpp @@ -1250,69 +1250,61 @@ void wxWindow::DoSetSize(int x, int y, int width, int height, int sizeFlags) GetSize(& oldW, & oldH); GetPosition(& oldX, & oldY); - bool useOldPos = FALSE; - bool useOldSize = FALSE; + if ( !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE) ) + { + if ( x == -1 ) + x = oldX; + if ( y == -1 ) + y = oldY; + } - if ((x == -1) && (x == -1) && ((sizeFlags & wxSIZE_ALLOW_MINUS_ONE) == 0)) - useOldPos = TRUE; - else if (x == oldX && y == oldY) - useOldPos = TRUE; + if ( width == -1 ) + width = oldW; + if ( height == -1 ) + height = oldH; - if ((width == -1) && (height == -1)) - useOldSize = TRUE; - else if (width == oldW && height == oldH) - useOldSize = TRUE; + bool nothingChanged = (x == oldX) && (y == oldY) && + (width == oldW) && (height == oldH); if (!wxNoOptimize::CanOptimize()) { - useOldSize = FALSE; useOldPos = FALSE; + nothingChanged = FALSE; } - if (useOldPos && useOldSize) - return; - - if (m_drawingArea) + if ( !nothingChanged ) { - CanvasSetSize(x, y, width, height, sizeFlags); - return; - } - Widget widget = (Widget) GetTopWidget(); - if (!widget) - return; + if (m_drawingArea) + { + CanvasSetSize(x, y, width, height, sizeFlags); + return; + } - bool managed = XtIsManaged( widget ); - if (managed) - XtUnmanageChild(widget); + Widget widget = (Widget) GetTopWidget(); + if (!widget) + return; - int xx = x; int yy = y; - AdjustForParentClientOrigin(xx, yy, sizeFlags); + bool managed = XtIsManaged( widget ); + if (managed) + XtUnmanageChild(widget); - if (!useOldPos) - { - if (x > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - XtVaSetValues(widget, XmNx, xx, NULL); - if (y > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - XtVaSetValues(widget, XmNy, yy, NULL); - } - if (!useOldSize) - { - if (width > -1) - XtVaSetValues(widget, XmNwidth, width, NULL); - if (height > -1) - XtVaSetValues(widget, XmNheight, height, NULL); - } + int xx = x; + int yy = y; + AdjustForParentClientOrigin(xx, yy, sizeFlags); - if (managed) - XtManageChild(widget); + DoMoveWindow(xx, yy, width, height); - // How about this bit. Maybe we don't need to generate size events - // all the time -- they'll be generated when the window is sized anyway. + if (managed) + XtManageChild(widget); + + // How about this bit. Maybe we don't need to generate size events + // all the time -- they'll be generated when the window is sized anyway. #if 0 - wxSizeEvent sizeEvent(wxSize(width, height), GetId()); - sizeEvent.SetEventObject(this); + wxSizeEvent sizeEvent(wxSize(width, height), GetId()); + sizeEvent.SetEventObject(this); - GetEventHandler()->ProcessEvent(sizeEvent); + GetEventHandler()->ProcessEvent(sizeEvent); #endif // 0 + } } void wxWindow::DoSetClientSize(int width, int height) @@ -1384,6 +1376,16 @@ void wxWindow::SetSizeHints(int minW, int minH, int maxW, int maxH, int incW, in XtVaSetValues(widget, XmNheightInc, incH, NULL); } +void wxWindow::DoMoveWindow(int x, int y, int width, int height) +{ + XtVaSetValues((Widget)GetTopWidget(), + XmNx, x, + XmNy, y, + XmNwidth, width, + XmNheight, height, + NULL); +} + // --------------------------------------------------------------------------- // text metrics // --------------------------------------------------------------------------- @@ -1718,7 +1720,7 @@ bool wxAddWindowToTable(Widget w, wxWindow *win) wxWidgetHashTable->Put((long) w, win); - wxLogDebug("Widget 0x%08x <-> window %p (%s)", + wxLogTrace("widget", "Widget 0x%08x <-> window %p (%s)", w, win, win->GetClassInfo()->GetClassName()); return TRUE;