emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GTK pixmap background support?


From: Jan D.
Subject: Re: GTK pixmap background support?
Date: Thu, 14 Aug 2003 18:30:04 +0200

This means that calls to XClear*, and exposures, will start out with the correct background color, and emacs need only worry about changing other
things.  When using the GTK toolkit, GTK itself apparently uses
XSetWindowBackground for its own purposes, but the xg_set_background gives
GTK enough info to keep things basically how emacs likes.

Yes, since the display engine in Emacs uses X calls, GTK must be kept
in sync so it doesn't mess things up.


However, with pixmap backgrounds, I want to use `XSetWindowBackgroundPixmap'
instead -- but there doesn't appear to be any equivalent call to
`gtk_widget_modify_bg' that takes a pixmap instead of a color! So you can see the problem: even though I've done a XSetWindowBackgroundPixmap, GTK will at some point set the window background to a color, and there doesn't
seem to be any way to tell it not to, so clears/exposures come out
incorrectly.

As it happens, I think I have to support more complete redrawing modes in
emacs anyway (for more complicated background tiling than just simple
frame-relative pixmaps), but it would be nice to be able to use the native X calls when possible, as it's more efficient, and probably going to be less
buggy for a while... :-)

So can you see any possible GTK solution to this qunadary? I thought maybe it would possible to do something tricky by consing up a theme or something,
but that seems rather hairy and certainly beyond my limited experience.

I have no solution to this.  I disabled setting of a background pixmap
by GTK themes because of the problems you are seeing.  I suspect you
need to look at the GTK (or rather GDK) code to see exactly what it
is doing, and how Emacs can work with it.

In general you set a background pixmap with styles.  If you look at
xg_create_frame_widgets (near the end) in gtkutil.c, you can see how
it is disabled.  By setting bg_pixmap in a GtkStyle to a suitable
GdkPixmap, and the apply the style to the widget, you can set a background
pixmap for the GTK widget.

        Jan D.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]