Le 19/04/2015 15:57, Enrico Tröger a écrit :
On 17/04/15 19:44, Colomban Wendling wrote:
Le 15/04/2015 15:27, Colomban Wendling a écrit : […]
So we'll have to fix the Windows build issue in some way…
I gave it another look, however I sort of give up :(.
What I know is, with gcc 3.4 the popups work cleanly and as expected, even when compiled natively on Windows. This is why the nightly builds work, they are built with an old gcc 3.4.
Then I tried gcc 4.8 and gcc 4.6 on Windows, both are failing. […]
This might support the above supposition about binary incompatibilities with the GTK libs. But maybe it is something completely different.
Thanks a lot for that in-depth investigation and testing!
But… dammit. If this is really an ABI issue depending on the GCC version, we don't have so many solutions:
1) build Geany using the same GCC as GTK was build;
2) use a GTK that is built with the same GCC as GTK (would mean rebuilding GTK I guess);
3) avoid hitting the ABI issue by not relying on the size of the structure (would mean not subclassing, but then I don't really have a solution);
4) avoid hitting the ABI issue by adding dummy padding (as we don't actually access any data ourselves it doesn't matter).
None of those solutions are really great… 1 is not really practical, and 2 is just a dream. I don't have a good way of doing 3. 4 is a bit ugly but quite easy to implement.
While the
typedef struct { GtkScrolledWindow parent; int dummy; } SmallScroller; typedef struct { GtkScrolledWindowClass parent; int dummy; } SmallS...
hack works pretty fine, it is still a crude hack and feels weird to send this to Scintilla upstream.
At worse we can always add it to our Scintilla patch…
I'll open an issue on Scintilla and see what Neil thinks, whether he'd accept a hack like that dummy field -- or maybe if he has a better understanding of ABI issues on Windows (but I'm afraid here there really is an ABI incompatibility and we're screwed on that front).
The other way, to stick with gcc 3.4.x for Windows, seems also quite ridiculous :(.
Indeed. And the mingw package for GCC3 even conflicts with the 4.x one :(
Regards, Colomban