From 618c809be9a07620a0e9a82ef2cc028afaaba75a Mon Sep 17 00:00:00 2001 From: sekelsenmat Date: Mon, 12 Jun 2017 08:35:37 +0000 Subject: [PATCH] cocoa: Fixes bug #31959: in FontDialog selected bold, result shows none style git-svn-id: trunk@55326 - --- lcl/interfaces/cocoa/cocoagdiobjects.pas | 11 +++++++++++ lcl/interfaces/cocoa/cocoawinapi.inc | 2 +- lcl/interfaces/cocoa/cocoawsdialogs.pp | 6 ++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lcl/interfaces/cocoa/cocoagdiobjects.pas b/lcl/interfaces/cocoa/cocoagdiobjects.pas index 6758ed1754..010ed579bc 100644 --- a/lcl/interfaces/cocoa/cocoagdiobjects.pas +++ b/lcl/interfaces/cocoa/cocoagdiobjects.pas @@ -691,6 +691,7 @@ end; procedure TCocoaFont.SetHandle(ANewHandle: NSFont); var pool: NSAutoreleasePool; + lsymTraits: NSFontSymbolicTraits; begin if FFont <> nil then begin @@ -701,7 +702,14 @@ begin FFont.retain; FName := NSStringToString(FFont.familyName); FSize := Round(FFont.pointSize); + FStyle := []; + lsymTraits := FFont.fontDescriptor.symbolicTraits; + if (lsymTraits and NSFontBoldTrait) <> 0 then + Include(FStyle, cfs_Bold); + if (lsymTraits and NSFontItalicTrait) <> 0 then + Include(FStyle, cfs_Italic); + FAntialiased := True; Pool.release; end; @@ -2185,6 +2193,9 @@ begin TM.tmWeight := Font.CocoaFontWeightToWin32FontWeight(NSFontManager.sharedFontManager.weightOfFont(Font.Font)); + if cfs_Bold in Font.Style then + TM.tmWeight := Min(FW_BOLD, TM.tmWeight); + if cfs_Italic in Font.Style then TM.tmItalic := 1; diff --git a/lcl/interfaces/cocoa/cocoawinapi.inc b/lcl/interfaces/cocoa/cocoawinapi.inc index fd71484682..8652b3965d 100644 --- a/lcl/interfaces/cocoa/cocoawinapi.inc +++ b/lcl/interfaces/cocoa/cocoawinapi.inc @@ -1256,7 +1256,7 @@ begin Traits := NSFontManager.sharedFontManager.traitsOfFont(AFont.Font); if (Traits and NSFontBoldTrait) <> 0 then ALogFont^.lfWeight := FW_BOLD - else; + else ALogFont^.lfWeight := FW_NORMAL; if (Traits and NSFontItalicTrait) <> 0 then ALogFont^.lfItalic := 1 diff --git a/lcl/interfaces/cocoa/cocoawsdialogs.pp b/lcl/interfaces/cocoa/cocoawsdialogs.pp index ba88720331..e8d52b4a09 100644 --- a/lcl/interfaces/cocoa/cocoawsdialogs.pp +++ b/lcl/interfaces/cocoa/cocoawsdialogs.pp @@ -454,10 +454,12 @@ end; procedure TFontPanelDelegate.doSelectFont(); var oldHandle, newHandle: TCocoaFont; - newFont: NSFont; + oldFont, newFont: NSFont; begin oldHandle := TCocoaFont(FontDialog.Font.Handle); - newFont := FontPanel.panelConvertFont(oldHandle.Font); + oldFont := oldHandle.Font; + //oldFont := NSFont.fontWithName_size(NSFont.systemFontOfSize(0).fontDescriptor.postscriptName, 0); + newFont := FontPanel.panelConvertFont(oldFont); newHandle := TCocoaFont.Create(newFont); FontDialog.Font.Handle := HFONT(newHandle); end;