Ticket #5624: charmapfontmenu.patch

File charmapfontmenu.patch, 2.0 KB (added by dru_ed, 14 years ago)

fixes charmap menu so font family is checked off too. this revised patch no longer uses extra BMenuItem

  • src/apps/charactermap/CharacterWindow.cpp

     
    6464    mutable char    fText[32];
    6565};
    6666
     67
    6768class RedirectUpAndDownFilter : public BMessageFilter {
    6869public:
    6970    RedirectUpAndDownFilter(BHandler* target)
     
    8990    BHandler*   fTarget;
    9091};
    9192
     93
    9294class EscapeMessageFilter : public BMessageFilter {
    9395public:
    9496    EscapeMessageFilter(uint32 command)
     
    298300        case kMsgFontSelected:
    299301        {
    300302            BMenuItem* item;
     303
    301304            if (message->FindPointer("source", (void**)&item) != B_OK)
    302305                break;
    303306
    304307            fSelectedFontItem->SetMarked(false);
    305308
    306309            // If it's the family menu, just select the first style
    307             if (item->Submenu() != NULL)
     310            if (item->Submenu() != NULL) {
     311                item->SetMarked(true);
    308312                item = item->Submenu()->ItemAt(0);
     313            }
    309314
    310315            if (item != NULL) {
    311316                item->SetMarked(true);
    312317                fSelectedFontItem = item;
    313 
    314318                _SetFont(item->Menu()->Name(), item->Label());
     319                item = item->Menu()->Superitem();
     320                item->SetMarked(true);
    315321            }
    316322            break;
    317323        }
     
    467473CharacterWindow::_CreateFontMenu()
    468474{
    469475    BMenu* menu = new BMenu("Font");
     476    BMenuItem* item;
    470477
    471478    font_family currentFamily;
    472479    font_style currentStyle;
     
    475482
    476483    int32 numFamilies = count_font_families();
    477484
     485    menu->SetRadioMode(true);
     486
    478487    for (int32 i = 0; i < numFamilies; i++) {
    479488        font_family family;
    480489        if (get_font_family(i, &family) == B_OK) {
     
    487496                font_style style;
    488497                uint32 flags;
    489498                if (get_font_style(family, j, &style, &flags) == B_OK) {
    490                     BMenuItem* item = new BMenuItem(style,
    491                         new BMessage(kMsgFontSelected));
     499                    item = new BMenuItem(style, new BMessage(kMsgFontSelected));
    492500                    subMenu->AddItem(item);
    493501
    494502                    if (!strcmp(family, currentFamily)
     
    501509        }
    502510    }
    503511
     512    item = menu->FindItem(currentFamily);
     513    item->SetMarked(true);
     514
    504515    return menu;
    505516}