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