diff --git a/src/apps/stylededit/Constants.h b/src/apps/stylededit/Constants.h index 9c375e4585..ac5dff7a69 100644 --- a/src/apps/stylededit/Constants.h +++ b/src/apps/stylededit/Constants.h @@ -55,6 +55,7 @@ const uint32 FONT_COLOR = 'Fcol'; const uint32 kMsgSetItalic = 'Fita'; const uint32 kMsgSetBold = 'Fbld'; const uint32 kMsgSetUnderline = 'Fuln'; +const uint32 kMsgSetStrikeout = 'Fsto'; const uint32 kMsgSetFontDown = 'Fsdw'; const uint32 kMsgSetFontUp = 'Fsup'; diff --git a/src/apps/stylededit/StyledEditWindow.cpp b/src/apps/stylededit/StyledEditWindow.cpp index f5ab506d9b..fda495e408 100644 --- a/src/apps/stylededit/StyledEditWindow.cpp +++ b/src/apps/stylededit/StyledEditWindow.cpp @@ -384,6 +384,7 @@ StyledEditWindow::MessageReceived(BMessage* message) fItalicItem->SetMarked((font.Face() & B_ITALIC_FACE) != 0); fBoldItem->SetMarked((font.Face() & B_BOLD_FACE) != 0); fUnderlineItem->SetMarked((font.Face() & B_UNDERSCORE_FACE) != 0); + fStrikeoutItem->SetMarked((font.Face() & B_STRIKEOUT_FACE) != 0); _SetFontStyle(fontFamily, fontStyle); break; @@ -409,6 +410,7 @@ StyledEditWindow::MessageReceived(BMessage* message) fItalicItem->SetMarked((font.Face() & B_ITALIC_FACE) != 0); fBoldItem->SetMarked((font.Face() & B_BOLD_FACE) != 0); fUnderlineItem->SetMarked((font.Face() & B_UNDERSCORE_FACE) != 0); + fStrikeoutItem->SetMarked((font.Face() & B_STRIKEOUT_FACE) != 0); _SetFontStyle(fontFamily, fontStyle); break; @@ -500,6 +502,23 @@ StyledEditWindow::MessageReceived(BMessage* message) _SetFontStyle(family, style); break; } + case kMsgSetStrikeout: + { + uint32 sameProperties; + BFont font; + fTextView->GetFontAndColor(&font, &sameProperties); + + if (fStrikeoutItem->IsMarked()) + font.SetFace(B_REGULAR_FACE); + fStrikeoutItem->SetMarked(!fStrikeoutItem->IsMarked()); + + font_family family; + font_style style; + font.GetFamilyAndStyle(&family, &style); + + _SetFontStyle(family, style); + break; + } case FONT_COLOR: { ssize_t colorLength; @@ -769,6 +788,7 @@ StyledEditWindow::MenusBeginning() fBoldItem->SetMarked((font.Face() & B_BOLD_FACE) != 0); fItalicItem->SetMarked((font.Face() & B_ITALIC_FACE) != 0); fUnderlineItem->SetMarked((font.Face() & B_UNDERSCORE_FACE) != 0); + fStrikeoutItem->SetMarked((font.Face() & B_STRIKEOUT_FACE) != 0); switch (fTextView->Alignment()) { case B_ALIGN_LEFT: @@ -1243,6 +1263,10 @@ StyledEditWindow::_InitWindow(uint32 encoding) new BMessage(kMsgSetUnderline)); fUnderlineItem->SetShortcut('U', 0); + fStrikeoutItem = new BMenuItem(B_TRANSLATE("Strikeout"), + new BMessage(kMsgSetStrikeout)); + fStrikeoutItem->SetShortcut('K', 0); + fFontMenu = new BMenu(B_TRANSLATE("Font")); fCurrentFontItem = 0; fCurrentStyleItem = 0; @@ -1257,6 +1281,7 @@ StyledEditWindow::_InitWindow(uint32 encoding) .AddItem(fBoldItem) .AddItem(fItalicItem) .AddItem(fUnderlineItem) + .AddItem(fStrikeoutItem) .AddSeparator() .End(); @@ -1915,6 +1940,9 @@ StyledEditWindow::_SetFontStyle(const char* fontFamily, const char* fontStyle) if (fUnderlineItem->IsMarked()) face |= B_UNDERSCORE_FACE; + if (fStrikeoutItem->IsMarked()) + face |= B_STRIKEOUT_FACE; + font.SetFace(face); fTextView->SetFontAndColor(&font, B_FONT_FAMILY_AND_STYLE | B_FONT_FACE); diff --git a/src/apps/stylededit/StyledEditWindow.h b/src/apps/stylededit/StyledEditWindow.h index 0a9aab7a83..b419287cb5 100644 --- a/src/apps/stylededit/StyledEditWindow.h +++ b/src/apps/stylededit/StyledEditWindow.h @@ -127,6 +127,7 @@ private: BMenuItem* fBoldItem; BMenuItem* fItalicItem; BMenuItem* fUnderlineItem; + BMenuItem* fStrikeoutItem; BMenuItem* fWrapItem; BMenuItem* fAlignLeft;