Le 03/04/2021 à 15:31, Jean-Marc Lasgouttes a écrit :
Note that a consequence of the visualization is that bookmarks bugs become more obvious. Simple example :

1. set a bookmark in a paragraph,
2. modify the paragraph,
3. undo
-> the bookmark disappears.

This is because the paragraph id dies in the operation. A fix is coming soon for this.

At least we have a ticket here https://www.lyx.org/trac/ticket/12235
but I am not sure anymore about the quick fix.

The issue is that, when copying paragraph for the need to undo, the ids should be preserved (both when doing recordUndo and when undoing), but the Paragraph constructors used by the containers assign new paragraph ids.

The only solution I see is to use a static member of Paragraph that tells whether we are in a mode where ids should be preserved or not. Then of course there are the thread safety issues which may or may not bite us eventually.

The solution I see is to add to the Paragraph::Private declaration something like
static thread_local bool preserve_ids = false;
and change it locally in the relevant Undo operations. Does this make sense? Does anyone have a better idea?

JMarc



Postface:

But then there is this in Paragraph.cpp:

// OSX clang, gcc < 4.8.0, and msvc < 2015 do not support C++11 thread_local
#if defined(__APPLE__) || (defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 8)
#define THREAD_LOCAL_STATIC static __thread
#elif defined(_MSC_VER) && (_MSC_VER < 1900)
#define THREAD_LOCAL_STATIC static __declspec(thread)
#else
#define THREAD_LOCAL_STATIC thread_local static
#endif


We do not support gcc < 4.9, but what about the other compilers? Can we consider now that thread_local exists? For the mac, it seems that it has been added to XCode 8. For windows, INSTALL.Win32 says that MSVC 2017 is recommended, and then instructs to use version 2019. What is the minimal version that we support ?

JMarc

--
lyx-devel mailing list
lyx-devel@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-devel

Reply via email to