diff options
Diffstat (limited to 'svtools/source/control')
-rw-r--r-- | svtools/source/control/ctrltool.cxx | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/svtools/source/control/ctrltool.cxx b/svtools/source/control/ctrltool.cxx index 3fdd51529ece..ffa4fbb92d56 100644 --- a/svtools/source/control/ctrltool.cxx +++ b/svtools/source/control/ctrltool.cxx @@ -123,19 +123,33 @@ private: {} }; -// ======================================================================= +//sort normal to the start +static int sortWeightValue(FontWeight eWeight) +{ + if (eWeight == WEIGHT_NORMAL) + return 0; + if (eWeight < WEIGHT_NORMAL) + return eWeight + 1; + if (eWeight > WEIGHT_NORMAL) + return eWeight - 1; +} static StringCompare ImplCompareFontInfo( ImplFontListFontInfo* pInfo1, ImplFontListFontInfo* pInfo2 ) { - if ( pInfo1->GetWeight() < pInfo2->GetWeight() ) + //Sort non italic before italics + if ( pInfo1->GetItalic() < pInfo2->GetItalic() ) return COMPARE_LESS; - else if ( pInfo1->GetWeight() > pInfo2->GetWeight() ) + else if ( pInfo1->GetItalic() > pInfo2->GetItalic() ) return COMPARE_GREATER; - if ( pInfo1->GetItalic() < pInfo2->GetItalic() ) + //Sort normal weight to the start, followed by lightest to heaviest weights + int nWeight1 = sortWeightValue(pInfo1->GetWeight()); + int nWeight2 = sortWeightValue(pInfo2->GetWeight()); + + if ( nWeight1 < nWeight2 ) return COMPARE_LESS; - else if ( pInfo1->GetItalic() > pInfo2->GetItalic() ) + else if ( nWeight1 > nWeight2 ) return COMPARE_GREATER; return pInfo1->GetStyleName().CompareTo( pInfo2->GetStyleName() ); |