[Mono-osx] Mono.framework 1.2.6_6 gtk-sharp issues
Geoff Norton
gnorton at novell.com
Mon Feb 11 00:05:52 EST 2008
Bob,
First and foremost, thanks for the feedback.
On 11-Feb-08, at 12:00 AM, Bob wrote:
> Note that I posted this on the Imendio GTK+ Mac OS X forum as well.
>
> I have tried the new GTK Mac backend contained in the Mono framework
> MonoFramework-1.2.6_6.macos10.novell.universal.dmg which was
> recently released. I used in on an application I wrote and am very
> impressed that most things work. Nice job getting this up to
> speed. This is close to being usable. I am on a PowerBook G4
> running Mac OS 10.4.10.
>
> I do have a few issues. Although I am using mono and gtk-sharp, I
> suspect that the problems I am having are in the GTK backend. The
> 1st of these is most important to me, the others are either
> annoyances or can be worked around. But #1 completely changes the
> behavior of my app.
>
> 1. KeyPressEvents seem to be handled differently using the X11
> backend and the Mac backend. Using X11 ALL keypress events are
> queued and handled by the main loop when it gets around to them. So
> if I have a big computation going and hit two key presses, the main
> loop will see them when the big computation stops and the main loop
> runs. But with the Mac backend key presses are not be seen by the
> main loop if they are pressed while a big computation is running.
> They just disappear. This greatly changes the behavior of my
> application (making it very hard to use reliable).
>
> 2. I use a Gtk.DrawingArea. It renders the window using pixmaps (in
> the background) and then the pixmap is drawn to the Gdk.Window (of
> the drawing area) using Gdk.Window.DrawDrawable. The problem is
> that using the Mac GTK backend this does not cause the actual window
> to get re-drawn (except when the window is first created). If I put
> in an explicit call to Gdk.Window.InvalidateRect after the call
> DrawDrawable then it gets re-drawn but this should not be necessary
> (and is not necessary using the X11 backend).
>
> 3. The keypress events for the function keys do not get recognized.
> When I print them using Console.WriteLine ("KPress: {0}", evnt.Key);
> they show as "KPress: 16777232" (instead of KPress: F2, etc). I am
> using a PowerBook G4 and have to push the "fn" key while pressing
> the function key so this could be playing a role (but it works fine
> in X11 mode).
>
> 4. I use fullscreen mode (Gtk.Window.Fullsceeen) and then Hide the
> fullscreen window when I want to go back to my normal window. This
> works well except that the Mac Menu Bar is not re-drawn after the
> Hide call. I should mention that I am impressed that the Fullscreen
> really uses the entire screen (including covering up the dock and
> mac menu bar). This is the way it should be and I was afraid that
> it would not work this was (this is a step up from the X11 backend
> on Mac).
>
> 5. I use a Gtk.TreeView and the vertical scrollbar sliders are not
> drawn (the horizontal ones are drawn). The vertical scrollbar seems
> to work fine but I have to guess where the slider is. I noticed that
> the gtk-demo program has this problem also.
>
> 6. The emulated mouse buttons do not work. For example, control
> click is suppose to be like a right mouse button (button 2) but
> instead it shows as a control and then a click.
>
> 7. I get a bunch of "CGBitmapContextGetBitsPerPixel: invalid
> context" getting output. Not sure if this matters. I also noticed
> that the gtk-demo program included in the distribution spits these
> out as well.
Could you please file issues for each of these independently as bugs
and assign them to me (gnorton at novell.com). The bulk of them are
likely gtk+ bugs, but we're trying to triage for imendio and make
native testcases for them as much as we can (and contribute back) and
this would be very helpful for us.
Thanks!
-g
More information about the Mono-osx
mailing list