TDEFontDialog: Fix font style matching.

This resolves issue TDE/tde#81.

Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
pull/164/head
Mavridis Philippe 3 years ago
parent 32fc7e3ee3
commit e902187194
No known key found for this signature in database
GPG Key ID: F8D2D7E2F989A494

@ -1,3 +1,4 @@
/*
Requires the Qt widget libraries, available at no cost at
@ -461,23 +462,26 @@ void TDEFontChooser::toggled_checkbox()
sizeOfFont->setEnabled( sizeCheckbox->isChecked() );
}
TQString TDEFontChooser::style_name(const TQString &style)
{
return i18n(
TQString(style).replace("Plain", "Regular")
.replace("Normal", "Regular")
.replace("Oblique", "Italic")
.utf8());
}
void TDEFontChooser::family_chosen_slot(const TQString& family)
{
TQFontDatabase dbase;
TQStringList styles = TQStringList(dbase.styles(family));
TQStringList styles = dbase.styles(family);
styleListBox->clear();
currentStyles.clear();
for ( TQStringList::Iterator it = styles.begin(); it != styles.end(); ++it ) {
TQString style = *it;
int pos = style.find("Plain");
if(pos >=0) style = style.replace(pos,5,i18n("Regular"));
pos = style.find("Normal");
if(pos >=0) style = style.replace(pos,6,i18n("Regular"));
pos = style.find("Oblique");
if(pos >=0) style = style.replace(pos,7,i18n("Italic"));
TQString style = style_name(*it);
if(!styleListBox->findItem(style)) {
styleListBox->insertItem(i18n(style.utf8()));
currentStyles.insert(i18n(style.utf8()), *it);
styleListBox->insertItem(style);
currentStyles.insert(style, *it);
}
}
if(styleListBox->count()==0) {
@ -565,8 +569,9 @@ void TDEFontChooser::setupDisplay()
{
// Calling familyListBox->setCurrentItem() causes the value of selFont
// to change, so we save the family, style and size beforehand.
TQFontDatabase dbase;
TQString family = TQString(selFont.family()).lower();
int style = (selFont.bold() ? 2 : 0) + (selFont.italic() ? 1 : 0);
TQString style = style_name(dbase.styleString(selFont));
int size = selFont.pointSize();
if (size == -1)
size = TQFontInfo(selFont).pointSize();
@ -624,7 +629,16 @@ void TDEFontChooser::setupDisplay()
if ( i == numEntries )
familyListBox->setCurrentItem( 0 );
styleListBox->setCurrentItem(style);
int item = 0;
for (int i = 0; i < (int)styleListBox->count(); ++i)
{
if (styleListBox->text(i) == style)
{
item = i;
break;
}
}
styleListBox->setCurrentItem(item);
numEntries = sizeListBox->count();
for (i = 0; i < numEntries; i++){

@ -271,6 +271,7 @@ private slots:
private:
void fillFamilyListBox(bool onlyFixedFonts = false);
void fillSizeList();
TQString style_name(const TQString &name);
// This one must be static since getFontList( TQStringList, char*) is so
static void addFont( TQStringList &list, const char *xfont );

Loading…
Cancel
Save