get QFont from _font
Stephan Witt
st.witt at gmx.net
Wed Aug 12 20:39:19 UTC 2020
Am 12.08.2020 um 22:06 schrieb Daniel <xracoonx at gmx.de>:
>
> On 2020-08-12 17:04, Richard Kimberly Heck wrote:
>> On 8/12/20 7:43 AM, Daniel wrote:
>>> Does anyone know how to get the QFont from a "Font const & font"? I tried
>>>
>>> fi = font.fontInfo();
>>>
>>> with
>>>
>>> 1. getFont(fi)
>>>
>>> and also
>>>
>>> 2. getFont(fi.realize(sane_font))
>>>
>>> But always get a SIGSEGV within LyX.
>> What exactly is the error with the latter?
>> Riki
>
> I get the message below. I am still not ably to create a backtrace. But the attached patch causes the issue for me when I open the text properties dialog. Now, oddly enough only the first time I open it…
>
… this is the assertion for a non-realized font:
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
frame #0: 0x00007fff599df2c2 libsystem_kernel.dylib`__pthread_kill + 10
frame #1: 0x00000001059c580d libsystem_pthread.dylib`pthread_kill + 284
frame #2: 0x00007fff599496a6 libsystem_c.dylib`abort + 127
* frame #3: 0x000000010039218f LyX`lyx::lyx_exit(exit_code=1) at LyX.cpp:275:2
frame #4: 0x0000000100593dd7 LyX`boost::assertion_failed(expr="false", function="void lyx::doAssertWithCallstack(bool)", file="/Users/stephan/git/lyx/src/support/lassert.cpp", line=44) at boost.cpp:47:2
frame #5: 0x000000010106cc1b LyX`lyx::doAssertWithCallstack(value=false) at lassert.cpp:44:3
frame #6: 0x000000010106d3a2 LyX`lyx::doAssert(expr="false", file="/Users/stephan/git/lyx/src/frontends/qt/GuiFontLoader.cpp", line=132) at lassert.cpp:53:2
frame #7: 0x0000000100ce6f75 LyX`lyx::frontend::(anonymous namespace)::fontinfo(f=0x00007ffeefbf6178) at GuiFontLoader.cpp:132:9
frame #8: 0x0000000100ce7185 LyX`lyx::frontend::getFont(f=0x00007ffeefbf6178) at GuiFontLoader.cpp:469:9
frame #9: 0x0000000100bd172a LyX`lyx::frontend::GuiCharacter::paramsToDialog(this=0x000000011e12bef0, font=0x000000011e12c0c0) at GuiCharacter.cpp:616:16
frame #10: 0x0000000100bd4655 LyX`lyx::frontend::GuiCharacter::initialiseParams(this=0x000000011e12bef0, (null)="") at GuiCharacter.cpp:675:2
frame #11: 0x0000000100b33db0 LyX`lyx::frontend::Dialog::showData(this=0x000000011e12bef0, data="") at Dialog.cpp:139:7
frame #12: 0x0000000100e9d971 LyX`lyx::frontend::GuiView::doShowDialog(this=0x000000011b965eb0, qname=0x00007ffeefbf6538, qdata=0x00007ffeefbf6530, inset=0x0000000000000000) at GuiView.cpp:4852:12
frame #13: 0x0000000100e9e0e3 LyX`lyx::frontend::GuiView::qt_static_metacall(_o=0x000000011b965eb0, _c=InvokeMetaMethod, _id=16, _a=0x00007ffeefbf64d0) at moc_GuiView.cpp:172:22
frame #14: 0x000000010553363a QtCore`QMetaObject::activate(QObject*, int, int, void**) + 2298
frame #15: 0x0000000100e9d835 LyX`lyx::frontend::GuiView::triggerShowDialog(this=0x000000011b965eb0, _t1=0x00007ffeefbf6538, _t2=0x00007ffeefbf6530, _t3=0x0000000000000000) at moc_GuiView.cpp:259:5
frame #16: 0x0000000100e9d777 LyX`lyx::frontend::GuiView::showDialog(this=0x000000011b965eb0, name="character", sdata="", inset=0x0000000000000000) at GuiView.cpp:4834:2
frame #17: 0x0000000100e93c29 LyX`lyx::frontend::GuiView::dispatch(this=0x000000011b965eb0, cmd=0x000000011ba08ac8, dr=0x00007ffeefbf9fd0) at GuiView.cpp:4412:5
frame #18: 0x0000000100b74135 LyX`lyx::frontend::GuiApplication::dispatch(this=0x0000000106a13930, cmd=0x000000011ba08ac8, dr=0x00007ffeefbf9fd0) at GuiApplication.cpp:2094:19
frame #19: 0x0000000100b6dd5d LyX`lyx::frontend::GuiApplication::dispatch(this=0x0000000106a13930, cmd=0x000000011ba08ac8) at GuiApplication.cpp:1409:3
The value of f in frame #7 is:
(lldb) print f
(const lyx::FontInfo) $0 = {
family_ = IGNORE_FAMILY
series_ = IGNORE_SERIES
shape_ = IGNORE_SHAPE
size_ = IGNORE_SIZE
style_ = IGNORE_STYLE
color_ = Color_ignore
background_ = Color_ignore
paint_color_ = (baseColor = Color_none, mergeColor = Color_ignore)
emph_ = FONT_OFF
underbar_ = FONT_IGNORE
strikeout_ = FONT_IGNORE
xout_ = FONT_IGNORE
uuline_ = FONT_IGNORE
uwave_ = FONT_IGNORE
noun_ = FONT_OFF
number_ = FONT_IGNORE
nospellcheck_ = FONT_OFF
}
Stephan
More information about the lyx-devel
mailing list