TDEFontChooser_local: Fix font style matching

This applies the same fix as in tdelibs for TDEFontDialog.

This resolves issue #22.

Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
pull/24/head
Mavridis Philippe 2 years ago
parent 56b40453cd
commit de8a8ab3e5
No known key found for this signature in database
GPG Key ID: F8D2D7E2F989A494

@ -1,3 +1,4 @@
/* /*
Requires the TQt widget libraries, available at no cost at Requires the TQt widget libraries, available at no cost at
@ -463,6 +464,15 @@ void TDEFontChooser_local::toggled_checkbox()
sizeOfFont->setEnabled( sizeCheckbox->isChecked() ); sizeOfFont->setEnabled( sizeCheckbox->isChecked() );
} }
TQString TDEFontChooser_local::style_name(const TQString &style)
{
return i18n(
TQString(style).replace("Plain", "Regular")
.replace("Normal", "Regular")
.replace("Oblique", "Italic")
.utf8());
}
void TDEFontChooser_local::family_chosen_slot(const TQString& family) void TDEFontChooser_local::family_chosen_slot(const TQString& family)
{ {
TQString currentFamily; TQString currentFamily;
@ -473,20 +483,14 @@ void TDEFontChooser_local::family_chosen_slot(const TQString& family)
TQFontDatabase dbase; TQFontDatabase dbase;
TQStringList styles = TQStringList(dbase.styles(currentFamily)); TQStringList styles = dbase.styles(currentFamily);
styleListBox->clear(); styleListBox->clear();
currentStyles.clear(); currentStyles.clear();
for ( TQStringList::Iterator it = styles.begin(); it != styles.end(); ++it ) { for ( TQStringList::Iterator it = styles.begin(); it != styles.end(); ++it ) {
TQString style = *it; TQString style = style_name(*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"));
if(!styleListBox->findItem(style)) { if(!styleListBox->findItem(style)) {
styleListBox->insertItem(i18n(style.utf8())); styleListBox->insertItem(style);
currentStyles.insert(i18n(style.utf8()), *it); currentStyles.insert(style, *it);
} }
} }
if(styleListBox->count()==0) { if(styleListBox->count()==0) {
@ -578,8 +582,9 @@ void TDEFontChooser_local::setupDisplay()
{ {
// Calling familyListBox->setCurrentItem() causes the value of selFont // Calling familyListBox->setCurrentItem() causes the value of selFont
// to change, so we save the family, style and size beforehand. // to change, so we save the family, style and size beforehand.
TQFontDatabase dbase;
TQString family = TQString(selFont.family()).lower(); 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(); int size = selFont.pointSize();
if (size == -1) if (size == -1)
size = TQFontInfo(selFont).pointSize(); size = TQFontInfo(selFont).pointSize();
@ -637,7 +642,16 @@ void TDEFontChooser_local::setupDisplay()
if ( i == numEntries ) if ( i == numEntries )
familyListBox->setCurrentItem( 0 ); 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(); numEntries = sizeListBox->count();
for (i = 0; i < numEntries; i++){ for (i = 0; i < numEntries; i++){

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

Loading…
Cancel
Save