[Lazarus] Gtk 1.2 fixes (again)

2022-02-12 Thread Kostas Michalopoulos via lazarus
Sending this mail again since it didn't arrive last time (can't even see 
it in the archives).


This is actually my third attempt, using my gmail account now (i tried 
my own email - not sure if it didn't pass through because the other one 
wasn't subscribed or due to some configuration issue... the mailing list 
page mentions that i only need to be subscribed to receive messages, not 
to send them too so i assumed it'd work - in the former case, i wonder 
how many of my replies were ignored since i switched to my own domain's 
account).


---

Hi all,

I submitted some fixes for the Gtk 1.2 LCL backend here that should 
bring it in working state (as it is right now it doesn't build due to 
some procs being moved to other units and even after adding those it 
barely works, windows get moved to 0,0, changing desktops or shading 
windows is broken, opening various dialogs crashes the program and other 
nice stuff :-P).


https://gitlab.com/freepascal.org/lazarus/lazarus/-/merge_requests/69

With the patch applied the IDE seems to work fine for the most part. 
There are some glitches (e.g. the main window doesn't get the proper 
height at first try but shading/unshading it or changing desktop and 
coming back or even just changing active tab in the component palette - 
basically anything that causes it to recalculate the height after it has 
been visible for a bit - fixes it so it is more of an annoyance than a 
blocker) but it works. Similarly it seems to use the wrong mouse cursor 
in some cases.


I've also tried a bunch of examples as well as some of my own projects 
and anything that didn't need functionality that wouldn't exist in Gtk 
1.2 anyway seemed to work fine.


I might check those at some point but for now i wanted to fix the more 
broken things, like windows not being positioned correctly, the IDE 
getting minimized when switching desktops and crashing when trying to 
open some forms like the console output or the Lazarus build 
configuration. Especially that last one since i spend the whole day 
trying to track it down (and turned out to be a bug in Gtk 1.2 that is 
only triggered in specific creation order for notebook pages - which i 
had to work around).


There are a couple of hacks in there that might have been done better 
(but still beats the current state of not working at all :-P):


1. The Gtk 1.2 LCL backend treats the unmapping as if it was a minimize 
event but that isn't strictly correct since unmapping can also happen 
when a window is shaded or when the current desktop changes. In either 
case you do not want all application windows to be minimized (which is 
what normally happens for a minimize event). There was some code to 
check for the desktop change case but there is a race condition which 
triggers with modern fast desktops (i guess it was written a long time 
ago) where the unmap event happens before the window manager switches 
desktops. I added a check for the shaded state and... a hacky Sleep for 
100ms (happens only once even with multiple unmapped windows) to avoid 
the race condition :-P. Even at 10ms seemed to work but i put it at 
100ms which seem safe.


2. The ScrollWindowEx function was not implemented at all and some 
controls, like the tree widget seem to rely on it for visual updates 
when scrolling, which in practice means that nothing scrolls when you 
use the scrollbar or the mouse wheel over the control. With my patch it 
still doesn't work, but i made it invalidate the control that requested 
the scroll which causes it to fully draw itself (and adds the ironic 
twist where the control uses ScrollWindowEx to optimize draws but ends 
up doing more work instead :-P). The call still returns False (ie. it 
failed) so it shouldn't break anything as the invalidation could 
theoretically come from anything - ie. some overzealous window manager 
or something. In theory some control could rely on scrolling to display 
partial animations but that control would have been broken in Gtk 1.2 
anyway.


I have also tried the OpenGL control but it doesn't seem to build. I've 
spent very little time on it though but i'll try to fix it in a separate 
patch.


Note that the link above also contains a link to the Gtk 1.2 libraries 
(source code) that the LCL backend relies on that should compile with 
current Linux OSes (though there will be some warnings). Gtk and glib 
are from Slackware and with its patches applied with some minor mod and 
Gdk_pixbuf (which Slackware doesn't seem to carry - or at least not the 
version needed by the Gtk 1.2 backend since there is the Gtk 2.x verson) 
is from an old Red Hat source distribution (might not be the latest 
version but LCL doesn't seem to use it much - it might be possible to 
remove the current dependency so that things work in Slackware out of 
the box as it seems to be one of the very few distributions that still 
ship with Gtk 1.2) that i have fixed to build and install without (much) 
problem. So if you want to test it

Re: [Lazarus] Gtk 1.2 fixes (again)

2022-02-13 Thread Bart via lazarus
On Sat, Feb 12, 2022 at 6:25 PM Kostas Michalopoulos via lazarus
 wrote:

This is currently being discussed on the devel ML.

-- 
Bart
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Gtk 1.2 fixes (again)

2022-02-13 Thread Kostas Michalopoulos via lazarus

On 2/13/22 16:49, Bart via lazarus wrote:

On Sat, Feb 12, 2022 at 6:25 PM Kostas Michalopoulos via lazarus
 wrote:

This is currently being discussed on the devel ML.



Isn't this the development mailing list? Most of the discussion seems to 
be about Lazarus' development and can't find any other list mentioned in 
https://lists.lazarus-ide.org/


Kostas
--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Gtk 1.2 fixes (again)

2022-02-13 Thread Sven Barth via lazarus
Kostas Michalopoulos via lazarus  schrieb am
So., 13. Feb. 2022, 18:31:

> On 2/13/22 16:49, Bart via lazarus wrote:
> > On Sat, Feb 12, 2022 at 6:25 PM Kostas Michalopoulos via lazarus
> >  wrote:
> >
> > This is currently being discussed on the devel ML.
> >
>
> Isn't this the development mailing list? Most of the discussion seems to
> be about Lazarus' development and can't find any other list mentioned in
> https://lists.lazarus-ide.org/


Bart means the internal, private Lazarus developer list.

Regards,
Sven
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Gtk 1.2 fixes (again)

2022-02-13 Thread Maxim Ganetsky via lazarus

12.02.2022 20:25, Kostas Michalopoulos via lazarus пишет:
Sending this mail again since it didn't arrive last time (can't even see 
it in the archives).


This is actually my third attempt, using my gmail account now (i tried 
my own email - not sure if it didn't pass through because the other one 
wasn't subscribed or due to some configuration issue... the mailing list 
page mentions that i only need to be subscribed to receive messages, not 
to send them too so i assumed it'd work - in the former case, i wonder 
how many of my replies were ignored since i switched to my own domain's 
account).


---

Hi all,

I submitted some fixes for the Gtk 1.2 LCL backend here that should 
bring it in working state (as it is right now it doesn't build due to 
some procs being moved to other units and even after adding those it 
barely works, windows get moved to 0,0, changing desktops or shading 
windows is broken, opening various dialogs crashes the program and other 
nice stuff :-P).


https://gitlab.com/freepascal.org/lazarus/lazarus/-/merge_requests/69


In the meantime your fixes have been merged.

But I still can't understand, why you put so much an effort into an 
ancient and obsolete widgetset. IMHO finishing fpGUI widgetset makes 
much more sense.


--
Best regards,
 Maxim Ganetsky  mailto:gan...@narod.ru
--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Gtk 1.2 fixes (again)

2022-02-13 Thread Kostas Michalopoulos via lazarus

On 2/13/22 21:33, Sven Barth via lazarus wrote:

Bart means the internal, private Lazarus developer list.


I see, but then why tell me? :-P

Kostas
--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Gtk 1.2 fixes (again)

2022-02-13 Thread Kostas Michalopoulos via lazarus

On 2/13/22 23:41, Maxim Ganetsky via lazarus wrote:
But I still can't understand, why you put so much an effort into an 
ancient and obsolete widgetset. 


I only spent 2-3 days, including getting Gtk 1.2 itself to compile and 
tracking down a gdk_pixbuf version that was compatible with Gtk 1.x, it 
wasn't that big of an effort. As to why, as i wrote in the comment in 
the merge request, i was curious about the Gtk 1.2 state, noticed that 
it didn't work and decided to fix it. I just simply like it when 
software doesn't drop support for old stuff just because they are old. I 
am into retrocomputing and various retrocomputing communities and i like 
being able to use modern software in retro environments (if anything i'd 
like to see what it'd take to bring back Win9x support to both FPC and 
Lazarus as in a game i made for a gamejam a couple of years ago i had to 
use several year old versions of FPC to make a Win9x version that would 
work with graphics cards on my older computers - like 3dfx Voodoo - and 
couldn't make the editor available for it because it wouldn't compile on 
the last Lazarus that supported Win9x - at least i was able to use the 
latest FPC for the DOS version, which is great).


Beyond that, as i wrote in the merge request, MUI is even more "ancient" 
and yet Lazarus added support for it recently. I do not see why it being 
called obsolete by its original developers means that one couldn't work 
on it if they want, it is open source after all, the entire point is 
having the freedom to do things like that.


Also i do not see why this is such an issue, the code is there and 
doesn't bother anyone - it isn't like i as a user who mostly works with 
win32 and gtk2 am bothered about the existence of 
gtk3/gtk4/cocoa/carbon/mui/fpgui/customdrawn/whatever. The worst that 
happens is that it takes a couple of MB of disk space in the source 
checkout.


> IMHO finishing fpGUI widgetset makes much more sense.

AFAIK fpGUI hasn't seen a release in years now and i think the 
development version has several incompatible changes, meaning that if 
anyone works on it now they may have a Gtk2->Gtk3->Gtk4 situation where 
they'll need to go and spend time getting the code base in a working 
state. TBH i am not a fan of APIs that break themselves - i'd rather 
make a Motif backend (it is technically still developed :-P and even 
theoretically an IEEE standard - or, well, it was at some point) as its 
API has a stability that goes back to the early 90s. While it'd be neat 
if there was support for it, it isn't something i personally find 
interesting.


Also why fpGUI specifically and not the custom drawn widgetset instead? 
It does seem have some issues but at least this one seems to be 100% on 
Lazarus instead of relying on an external project to remain working.


Kostas
--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Gtk 1.2 fixes (again)

2022-02-13 Thread denisgolovan via lazarus


>From "Kostas"

> As to why, as i wrote in the comment in
> the merge request, i was curious about the Gtk 1.2 state, noticed that
> it didn't work and decided to fix it. I just simply like it when
> software doesn't drop support for old stuff just because they are old. I
> am into retrocomputing and various retrocomputing communities and i like
> being able to use modern software in retro environments (if anything i'd
> like to see what it'd take to bring back Win9x support to both FPC and
> Lazarus as in a game i made for a gamejam a couple of years ago i had to
> use several year old versions of FPC to make a Win9x version that would
> work with graphics cards on my older computers - like 3dfx Voodoo - and
> couldn't make the editor available for it because it wouldn't compile on
> the last Lazarus that supported Win9x - at least i was able to use the
> latest FPC for the DOS version, which is great).

Personally, I have deep respect to people who fight against entropy (in all 
senses).
That make FPC/Lazarus community so special in my view.
Please go on.

-- Regards,
Denis Golovan
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Gtk 1.2 fixes (again)

2022-02-13 Thread Sven Barth via lazarus

Am 13.02.2022 um 22:58 schrieb Kostas Michalopoulos via lazarus:

On 2/13/22 21:33, Sven Barth via lazarus wrote:

Bart means the internal, private Lazarus developer list.


I see, but then why tell me? :-P


To explain to you that your request is looked at and why there might be 
delays in deciding about it.


Regards,
Sven
--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Gtk 1.2 fixes (again)

2022-02-13 Thread Sven Barth via lazarus

Am 13.02.2022 um 23:22 schrieb Kostas Michalopoulos via lazarus:
Beyond that, as i wrote in the merge request, MUI is even more 
"ancient" and yet Lazarus added support for it recently. I do not see 
why it being called obsolete by its original developers means that one 
couldn't work on it if they want, it is open source after all, the 
entire point is having the freedom to do things like that.


While MUI might be ancient it's still actively used by current operating 
systems, namely MorphOS and AROS (and of course Amiga operating systems 
themselves, but they aren't actively developed anymore).


Note: I'm not critizing your effort, in fact I'm welcoming it as myself 
want to find the time to make sure that current Lazarus works correctly 
on PowerPC Mac with Carbon again.


Regards,
Sven
--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Gtk 1.2 fixes (again)

2022-02-14 Thread Bart via lazarus
On Sun, Feb 13, 2022 at 10:58 PM Kostas Michalopoulos via lazarus
 wrote:
>
> On 2/13/22 21:33, Sven Barth via lazarus wrote:
> > Bart means the internal, private Lazarus developer list.
>
> I see, but then why tell me? :-P

So that would know it is debated and not simply ignored.


-- 
Bart
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Gtk 1.2 fixes (again)

2022-02-17 Thread Tarnyko via lazarus
From memory, Windows 95 would be the target of such a version (98 already 
supports an early GTK+ 2.x). Is that your target? 

(just as denisgolovan said, I salute such an effort -as little as the market 
may be, and as long as it's doesn't delay/impede main stuff) 

Kostas Michalopoulos via lazarus writes: 


On 2/13/22 23:41, Maxim Ganetsky via lazarus wrote:
But I still can't understand, why you put so much an effort into an 
ancient and obsolete widgetset.


I only spent 2-3 days, including getting Gtk 1.2 itself to compile and 
tracking down a gdk_pixbuf version that was compatible with Gtk 1.x, it 
wasn't that big of an effort. As to why, as i wrote in the comment in the 
merge request, i was curious about the Gtk 1.2 state, noticed that it 
didn't work and decided to fix it. I just simply like it when software 
doesn't drop support for old stuff just because they are old. I am into 
retrocomputing and various retrocomputing communities and i like being 
able to use modern software in retro environments (if anything i'd like to 
see what it'd take to bring back Win9x support to both FPC and Lazarus as 
in a game i made for a gamejam a couple of years ago i had to use several 
year old versions of FPC to make a Win9x version that would work with 
graphics cards on my older computers - like 3dfx Voodoo - and couldn't 
make the editor available for it because it wouldn't compile on the last 
Lazarus that supported Win9x - at least i was able to use the latest FPC 
for the DOS version, which is great). 

Beyond that, as i wrote in the merge request, MUI is even more "ancient" 
and yet Lazarus added support for it recently. I do not see why it being 
called obsolete by its original developers means that one couldn't work on 
it if they want, it is open source after all, the entire point is having 
the freedom to do things like that. 

Also i do not see why this is such an issue, the code is there and doesn't 
bother anyone - it isn't like i as a user who mostly works with win32 and 
gtk2 am bothered about the existence of 
gtk3/gtk4/cocoa/carbon/mui/fpgui/customdrawn/whatever. The worst that 
happens is that it takes a couple of MB of disk space in the source 
checkout. 

> IMHO finishing fpGUI widgetset makes much more sense. 

AFAIK fpGUI hasn't seen a release in years now and i think the development 
version has several incompatible changes, meaning that if anyone works on 
it now they may have a Gtk2->Gtk3->Gtk4 situation where they'll need to go 
and spend time getting the code base in a working state. TBH i am not a 
fan of APIs that break themselves - i'd rather make a Motif backend (it is 
technically still developed :-P and even theoretically an IEEE standard - 
or, well, it was at some point) as its API has a stability that goes back 
to the early 90s. While it'd be neat if there was support for it, it isn't 
something i personally find interesting. 

Also why fpGUI specifically and not the custom drawn widgetset instead? It 
does seem have some issues but at least this one seems to be 100% on 
Lazarus instead of relying on an external project to remain working. 


Kostas
--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus

--
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus


Re: [Lazarus] Gtk 1.2 fixes (again)

2022-02-17 Thread Bart via lazarus
On Thu, Feb 17, 2022 at 1:24 PM Tarnyko via lazarus
 wrote:

>  From memory, Windows 95 would be the target of such a version (98 already
> supports an early GTK+ 2.x). Is that your target?

I was talking about native Win9x support for the Win32 widgetset (not
GTK widgetset on Windows).


-- 
Bart
-- 
___
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus