Index: source/ui/frmdlg/frmpage.cxx =================================================================== RCS file: /cvs/sw/sw/source/ui/frmdlg/frmpage.cxx,v retrieving revision 1.61 diff -u -p -r1.61 frmpage.cxx --- source/ui/frmdlg/frmpage.cxx 5 Jun 2007 17:42:17 -0000 1.61 +++ source/ui/frmdlg/frmpage.cxx 15 Jul 2007 16:51:00 -0000 @@ -1727,20 +1727,15 @@ IMPL_LINK( SwFrmPage, MirrorHdl, CheckBo /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ - IMPL_LINK( SwFrmPage, RelSizeClickHdl, CheckBox *, pBtn ) { if (pBtn == &aRelWidthCB) { - aWidthED.ShowPercent(pBtn->IsChecked()); - if(pBtn->IsChecked()) - aWidthED.MetricField::SetMax(MAX_PERCENT_WIDTH); + aWidthED.ShowPercent(pBtn->IsChecked()); } else // pBtn == &aRelHeightCB { - aHeightED.ShowPercent(pBtn->IsChecked()); - if(pBtn->IsChecked()) - aHeightED.MetricField::SetMax(MAX_PERCENT_HEIGHT); + aHeightED.ShowPercent(pBtn->IsChecked()); } if (pBtn) // Nur wenn Handler durch Aenderung des Controllers gerufen wurde @@ -1757,7 +1752,6 @@ IMPL_LINK( SwFrmPage, RelSizeClickHdl, C /*-------------------------------------------------------------------- Beschreibung: Bereichspruefung --------------------------------------------------------------------*/ - IMPL_LINK( SwFrmPage, RangeModifyHdl, Edit *, pEdit ) { if (bNoModifyHdl) @@ -1824,6 +1818,7 @@ IMPL_LINK( SwFrmPage, RangeModifyHdl, Ed aMgr.ValidateMetrics(aVal, mpToCharCntntPos); // Nochmal um mit korrekter Breite und Hoehe alle restlichen Werte zu ermitteln + // alle Spalten muessen passen if(GetTabDialog()->GetExampleSet() && SFX_ITEM_DEFAULT <= GetTabDialog()->GetExampleSet()->GetItemState(RES_COL)) @@ -1841,9 +1836,6 @@ IMPL_LINK( SwFrmPage, RangeModifyHdl, Ed } } - nWidth = aVal.nWidth; - nHeight = aVal.nHeight; - // Mindestbreite auch fuer Vorlage aHeightED.SetMin(aHeightED.Normalize(aVal.nMinHeight), FUNIT_TWIP); aWidthED. SetMin(aWidthED.Normalize(aVal.nMinWidth), FUNIT_TWIP); @@ -1857,15 +1849,27 @@ IMPL_LINK( SwFrmPage, RangeModifyHdl, Ed aWidthED.SetMax(aWidthED.Normalize(nTmp), FUNIT_TWIP); nTmp = Min(nHeight * nMaxWidth / Max(nWidth, 1L), nMaxWidth); - aHeightED.SetMax(aWidthED.Normalize(nTmp), FUNIT_TWIP); + aHeightED.SetMax(aHeightED.Normalize(nTmp), FUNIT_TWIP); } else { - SwTwips nTmp = aHeightED.Normalize(nMaxHeight); - aHeightED.SetMax(nTmp, FUNIT_TWIP); - nTmp = aWidthED.Normalize(nMaxWidth); - aWidthED.SetMax(nTmp, FUNIT_TWIP); + // fix for i21284. When one ED attains its limit, it blocks the other. + if ( aFixedRatioCB.IsChecked() ) + { + if ( nWidth >= nMaxWidth ) + aHeightED.SetMax(aHeightED.Normalize(nHeight), FUNIT_TWIP); + if ( nHeight >= nMaxHeight ) + aWidthED.SetMax(aWidthED.Normalize(nWidth), FUNIT_TWIP); + } + else + { + SwTwips nTmp = aHeightED.Normalize(nMaxHeight); + aHeightED.SetMax(nTmp, FUNIT_TWIP); + + nTmp = aWidthED.Normalize(nMaxWidth); + aWidthED.SetMax(nTmp, FUNIT_TWIP); + } } aAtHorzPosED.SetMin(aAtHorzPosED.Normalize(aVal.nMinHPos), FUNIT_TWIP); @@ -2114,14 +2118,12 @@ IMPL_LINK( SwFrmPage, ModifyHdl, Edit *, SwTwips nHeight = aHeightED.Denormalize(aHeightED.GetValue(FUNIT_TWIP)); if ( aFixedRatioCB.IsChecked() ) { - BOOL bWidthRelative = aRelWidthCB.IsChecked(); - BOOL bHeightRelative = aRelHeightCB.IsChecked(); if ( pEdit == &aWidthED ) { nHeight = SwTwips((double)nWidth / fWidthHeightRatio); aHeightED.SetPrcntValue(aHeightED.Normalize(nHeight), FUNIT_TWIP); } - else if(pEdit == &aHeightED) + else if( pEdit == &aHeightED ) { nWidth = SwTwips((double)nHeight * fWidthHeightRatio); aWidthED.SetPrcntValue(aWidthED.Normalize(nWidth), FUNIT_TWIP);