diff options
| -rwxr-xr-x | src/nigui.nim | 7 | ||||
| -rwxr-xr-x | src/nigui/private/gtk3/platform_impl.nim | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/nigui.nim b/src/nigui.nim index 7f49a71..6eda16a 100755 --- a/src/nigui.nim +++ b/src/nigui.nim @@ -1526,7 +1526,7 @@ proc triggerRelayout(control: Control) = if con.parentWindow != nil: con.parentWindow.triggerRelayout() if control.parentControl != nil: - control.parentControl.realignChildControls() + control.parentControl.triggerRelayout() control.realignChildControls() proc triggerRelayoutIfModeIsAuto(control: Control) = @@ -1620,6 +1620,7 @@ method fontFamily(control: Control): string = control.fFontFamily method `fontFamily=`(control: Control, fontFamily: string) = control.setFontFamily(fontFamily) control.fUseDefaultFontFamily = false + control.triggerRelayoutIfModeIsAuto() method setFontFamily(control: Control, fontFamily: string) = control.fFontFamily = fontFamily @@ -1629,21 +1630,23 @@ method setFontFamily(control: Control, fontFamily: string) = method resetFontFamily(control: Control) = control.setFontFamily(fDefaultFontFamily) control.fUseDefaultFontFamily = true + control.triggerRelayoutIfModeIsAuto() method fontSize(control: Control): float = control.fFontSize method `fontSize=`(control: Control, fontSize: float) = control.setFontSize(fontSize) control.fUseDefaultFontSize = false + control.triggerRelayoutIfModeIsAuto() method setFontSize(control: Control, fontSize: float) = control.fFontSize = fontSize - control.triggerRelayoutIfModeIsAuto() # should be extended by ControlImpl method resetFontSize(control: Control) = control.setFontSize(fDefaultFontSize) control.fUseDefaultFontSize = true + control.triggerRelayoutIfModeIsAuto() method backgroundColor(control: Control): Color = control.fBackgroundColor diff --git a/src/nigui/private/gtk3/platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim index 086bbfa..c30cbd0 100755 --- a/src/nigui/private/gtk3/platform_impl.nim +++ b/src/nigui/private/gtk3/platform_impl.nim @@ -1040,6 +1040,13 @@ method getTextLineWidth(control: ControlImpl, text: string): int = method getTextLineHeight(control: ControlImpl): int = var layout = gtk_widget_create_pango_layout(control.fHandle, "a") + + # Because the widget's font size is not always regarded, we have to set the font here again: + var font = pango_font_description_new() + pango_font_description_set_family(font, control.fontFamily) + pango_font_description_set_size(font, cint(control.fontSize * pFontSizeFactor)) + pango_layout_set_font_description(layout, font) + var width: cint = 0 var height: cint = 0 pango_layout_get_pixel_size(layout, width, height) |
