Added long ChangeLog entry for changes in this branch

This commit is contained in:
Owen Taylor 2000-02-25 03:53:54 +00:00
parent c433c6741d
commit aee7dfc971
32 changed files with 1254 additions and 346 deletions

121
ChangeLog
View File

@ -1,3 +1,120 @@
Thu Feb 24 18:11:46 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkinternals.h gdk/gdkprivate.h gdk/Makefile.am: Add a header file for
the _really_ internal stuff, and leave gdkprivate.h for the fake private
stuff that we've traditionally exposed.
* gdk/**.c: Use gdkinternals.h where appropriate.
* gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h gdk/x11/*.c: Make gdkx.h
not include gdkprivate-x11.h, move all stuff of conceivable public
interest into gdkx.h; keep all really private stuff in
uninstalled header gdkprivate-x11.h.
* gdk/gdkdraw.c gdk/gdkwindow.c gdk/gdkinternals: Redirect all calls to
image->image_put on windows through a new function _gdk_window_draw_image()
to allow us to do backing store for images. (Sort of ugly)
* gdk/gdkgc.c gdk/gdkprivate.h: Cache the ts and clip origins for graphics
contexts locally so that we can offset them properly when drawing
onto backing pixmaps.
* gdk/gdkinput.h: Reindented
* gdk/gdkprivate.h gdk/x11/gdkwindow-x11.c: Store the background
pixmap or color for the window, so we can properly initialize
our double-buffer pixmaps, and also so that we temporarily set
a background of None while scrolling.
* gdk/gdkregion.h: Revise region boolean operators to have an
interface that is actually convenient - switch from creating new
regions on every op, to "methods" that modify existing regions
(A = A OP B). 3 argument forms which allow dest == src, would also
be possible, but the current interfaces seem to map nicely
onto what needs to be done. (There is quite a lot of region
code in GDK now.)
* gdk/gdkregion.h: Add constructor from rectangle and a copy
operator.
* gdk/x11/{gdkregion-generic.[ch],gdkpolyreg-generic.c,
gdkpoly-generic.h: Copy region code from Xlib, switch it over
to 32 bit coordinates, modify it to be mostly GTK+ style
and to have interfaces that match gdkregion.h.
* gdk/gdkwindow.c gdk/gdkprivate.h: Add facility for
double-buffered drawing. gdk_window_begin_paint_{rect,region}()
create a backing pixmap and redirect all drawing to
that backing pixmap until a matching gdk_window_end_paint().
* gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkdrawable-x11.c:
Create a special drawable class for GtkWindow's that
redirects the drawing to the backing pixmap as necessary
and then calls the real operations in _gdk_windowing_window_class.
* gdk/gdkprivate.h gdk/gdkwindow.[ch] gdk/x11/gdkevents-x11.c:
Store invalid region for each window. Generate expose events for invalid
region in an idle. This replaces both the expose compression
and the redrawing queuing in GTK+. It is both more efficient and
simpler than either one individually and far more so then the
combination.
* gdk/x11/gdkgeometry.c gdk/x11/gdkwindow.c gdk/x11/gdkprivate-x11.h:
Emulate 32 bit coordinates for windows with 16 bit coordinates
by offsetting drawing, guffaw scrolling techniques and
mapping/unmapping child windows as necessary.
* gdk/gdkwindow.[ch] gdk/x11/gdkgeometry.c: Add anti-exposes,
where, when invalid regions are processed, the region is stored,
and if expose events come in that are detectably duplicate
the processed exposes (by comparison of event serial numbers),
the stored region is subtracted out of those exposes.
* gdk/x11/gdkgeometry.c: Temporarily unset backing pixmaps of
regions newly exposed when scrolling or resizing windows.
This, combined with forcing processesing of queued invalidated
regions, gives nice flicker-free scrolling.
* gtk/gtklayout.c gtk/gtkviewport.c: Force processing of
invalidated regions after every scroll.
* gtk/gtklayout.c: Vastly simplify using the new 32 bit coordinate
emulation in GDK. Its, for all practical purposes just a
GtkViewport/GtkFixed hybrid now.
* gdk/gdkdrawable-x11.c: Convert from GDK (32 bit) to X11
(16-bit) structures as necessary instead of just casting.
* gdk/x11/gdkgc-x11.c gdk/x11/gdkx.h: Replace XSetRegion with code
in terms of the structures from gdkregion-generic.c, using appropriate
offsets from GDK to X11 coordinates. Cache clip mask and
origin and ts origin locally and only flush to the server
when drawing, to avoid constantly setting and resetting these
values when offsetting GC's for scrolling and backing pixmaps.
* gdk/x11/gdkinput-x11.c: Fix leak of axes structures.
* gtk/gtkcontainer.c: Call process_all_updates at end
of resizing to reduce flicker. (Avoids having redraw
lag arbitrarily behind resize under some circumstances)
* gtk/gtkentry.c: Remove old backing store code, and simply take
advantage of the new backing store capabilities of GDK.
* gtk/gtkmain.c: Simple implementation of widget backing
store - simply push a paint while handling each expose.
(Should really be configurable widget for widget.)
* gtk/gtkwidget.c: Remove all the old complicated redraw
code, and simply invalidate the GDK windows from
gdk_window_queue_clear(), etc. (Sigh, so much carefully
debugged complexity ... gone to the winds.)
Remove all the code for suppressing expose events while
resizes are pending; this isn't needed since the invalid
areas won't be processed until after the resizes are
processed, since they are in a lower priority idle.
Thu Feb 24 15:37:41 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkrectangle.c (gdk_rectangle_intersect): Set width
@ -34,13 +151,9 @@ Mon Dec 13 14:06:03 1999 Owen Taylor <otaylor@redhat.com>
of the background image instead of scaling the background down to
a line.
Wed Nov 24 13:02:17 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtk[hv]scrollbar.c (gtk_hscrollbar_size_allocate): Removed mysterious
which temporarily set slider to wrong size.
Tue Nov 23 15:48:35 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkaspectframe.c gtkbin.c: Remove unecessary calls to
queue_clear().

View File

@ -1,3 +1,120 @@
Thu Feb 24 18:11:46 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkinternals.h gdk/gdkprivate.h gdk/Makefile.am: Add a header file for
the _really_ internal stuff, and leave gdkprivate.h for the fake private
stuff that we've traditionally exposed.
* gdk/**.c: Use gdkinternals.h where appropriate.
* gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h gdk/x11/*.c: Make gdkx.h
not include gdkprivate-x11.h, move all stuff of conceivable public
interest into gdkx.h; keep all really private stuff in
uninstalled header gdkprivate-x11.h.
* gdk/gdkdraw.c gdk/gdkwindow.c gdk/gdkinternals: Redirect all calls to
image->image_put on windows through a new function _gdk_window_draw_image()
to allow us to do backing store for images. (Sort of ugly)
* gdk/gdkgc.c gdk/gdkprivate.h: Cache the ts and clip origins for graphics
contexts locally so that we can offset them properly when drawing
onto backing pixmaps.
* gdk/gdkinput.h: Reindented
* gdk/gdkprivate.h gdk/x11/gdkwindow-x11.c: Store the background
pixmap or color for the window, so we can properly initialize
our double-buffer pixmaps, and also so that we temporarily set
a background of None while scrolling.
* gdk/gdkregion.h: Revise region boolean operators to have an
interface that is actually convenient - switch from creating new
regions on every op, to "methods" that modify existing regions
(A = A OP B). 3 argument forms which allow dest == src, would also
be possible, but the current interfaces seem to map nicely
onto what needs to be done. (There is quite a lot of region
code in GDK now.)
* gdk/gdkregion.h: Add constructor from rectangle and a copy
operator.
* gdk/x11/{gdkregion-generic.[ch],gdkpolyreg-generic.c,
gdkpoly-generic.h: Copy region code from Xlib, switch it over
to 32 bit coordinates, modify it to be mostly GTK+ style
and to have interfaces that match gdkregion.h.
* gdk/gdkwindow.c gdk/gdkprivate.h: Add facility for
double-buffered drawing. gdk_window_begin_paint_{rect,region}()
create a backing pixmap and redirect all drawing to
that backing pixmap until a matching gdk_window_end_paint().
* gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkdrawable-x11.c:
Create a special drawable class for GtkWindow's that
redirects the drawing to the backing pixmap as necessary
and then calls the real operations in _gdk_windowing_window_class.
* gdk/gdkprivate.h gdk/gdkwindow.[ch] gdk/x11/gdkevents-x11.c:
Store invalid region for each window. Generate expose events for invalid
region in an idle. This replaces both the expose compression
and the redrawing queuing in GTK+. It is both more efficient and
simpler than either one individually and far more so then the
combination.
* gdk/x11/gdkgeometry.c gdk/x11/gdkwindow.c gdk/x11/gdkprivate-x11.h:
Emulate 32 bit coordinates for windows with 16 bit coordinates
by offsetting drawing, guffaw scrolling techniques and
mapping/unmapping child windows as necessary.
* gdk/gdkwindow.[ch] gdk/x11/gdkgeometry.c: Add anti-exposes,
where, when invalid regions are processed, the region is stored,
and if expose events come in that are detectably duplicate
the processed exposes (by comparison of event serial numbers),
the stored region is subtracted out of those exposes.
* gdk/x11/gdkgeometry.c: Temporarily unset backing pixmaps of
regions newly exposed when scrolling or resizing windows.
This, combined with forcing processesing of queued invalidated
regions, gives nice flicker-free scrolling.
* gtk/gtklayout.c gtk/gtkviewport.c: Force processing of
invalidated regions after every scroll.
* gtk/gtklayout.c: Vastly simplify using the new 32 bit coordinate
emulation in GDK. Its, for all practical purposes just a
GtkViewport/GtkFixed hybrid now.
* gdk/gdkdrawable-x11.c: Convert from GDK (32 bit) to X11
(16-bit) structures as necessary instead of just casting.
* gdk/x11/gdkgc-x11.c gdk/x11/gdkx.h: Replace XSetRegion with code
in terms of the structures from gdkregion-generic.c, using appropriate
offsets from GDK to X11 coordinates. Cache clip mask and
origin and ts origin locally and only flush to the server
when drawing, to avoid constantly setting and resetting these
values when offsetting GC's for scrolling and backing pixmaps.
* gdk/x11/gdkinput-x11.c: Fix leak of axes structures.
* gtk/gtkcontainer.c: Call process_all_updates at end
of resizing to reduce flicker. (Avoids having redraw
lag arbitrarily behind resize under some circumstances)
* gtk/gtkentry.c: Remove old backing store code, and simply take
advantage of the new backing store capabilities of GDK.
* gtk/gtkmain.c: Simple implementation of widget backing
store - simply push a paint while handling each expose.
(Should really be configurable widget for widget.)
* gtk/gtkwidget.c: Remove all the old complicated redraw
code, and simply invalidate the GDK windows from
gdk_window_queue_clear(), etc. (Sigh, so much carefully
debugged complexity ... gone to the winds.)
Remove all the code for suppressing expose events while
resizes are pending; this isn't needed since the invalid
areas won't be processed until after the resizes are
processed, since they are in a lower priority idle.
Thu Feb 24 15:37:41 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkrectangle.c (gdk_rectangle_intersect): Set width
@ -34,13 +151,9 @@ Mon Dec 13 14:06:03 1999 Owen Taylor <otaylor@redhat.com>
of the background image instead of scaling the background down to
a line.
Wed Nov 24 13:02:17 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtk[hv]scrollbar.c (gtk_hscrollbar_size_allocate): Removed mysterious
which temporarily set slider to wrong size.
Tue Nov 23 15:48:35 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkaspectframe.c gtkbin.c: Remove unecessary calls to
queue_clear().

View File

@ -1,3 +1,120 @@
Thu Feb 24 18:11:46 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkinternals.h gdk/gdkprivate.h gdk/Makefile.am: Add a header file for
the _really_ internal stuff, and leave gdkprivate.h for the fake private
stuff that we've traditionally exposed.
* gdk/**.c: Use gdkinternals.h where appropriate.
* gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h gdk/x11/*.c: Make gdkx.h
not include gdkprivate-x11.h, move all stuff of conceivable public
interest into gdkx.h; keep all really private stuff in
uninstalled header gdkprivate-x11.h.
* gdk/gdkdraw.c gdk/gdkwindow.c gdk/gdkinternals: Redirect all calls to
image->image_put on windows through a new function _gdk_window_draw_image()
to allow us to do backing store for images. (Sort of ugly)
* gdk/gdkgc.c gdk/gdkprivate.h: Cache the ts and clip origins for graphics
contexts locally so that we can offset them properly when drawing
onto backing pixmaps.
* gdk/gdkinput.h: Reindented
* gdk/gdkprivate.h gdk/x11/gdkwindow-x11.c: Store the background
pixmap or color for the window, so we can properly initialize
our double-buffer pixmaps, and also so that we temporarily set
a background of None while scrolling.
* gdk/gdkregion.h: Revise region boolean operators to have an
interface that is actually convenient - switch from creating new
regions on every op, to "methods" that modify existing regions
(A = A OP B). 3 argument forms which allow dest == src, would also
be possible, but the current interfaces seem to map nicely
onto what needs to be done. (There is quite a lot of region
code in GDK now.)
* gdk/gdkregion.h: Add constructor from rectangle and a copy
operator.
* gdk/x11/{gdkregion-generic.[ch],gdkpolyreg-generic.c,
gdkpoly-generic.h: Copy region code from Xlib, switch it over
to 32 bit coordinates, modify it to be mostly GTK+ style
and to have interfaces that match gdkregion.h.
* gdk/gdkwindow.c gdk/gdkprivate.h: Add facility for
double-buffered drawing. gdk_window_begin_paint_{rect,region}()
create a backing pixmap and redirect all drawing to
that backing pixmap until a matching gdk_window_end_paint().
* gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkdrawable-x11.c:
Create a special drawable class for GtkWindow's that
redirects the drawing to the backing pixmap as necessary
and then calls the real operations in _gdk_windowing_window_class.
* gdk/gdkprivate.h gdk/gdkwindow.[ch] gdk/x11/gdkevents-x11.c:
Store invalid region for each window. Generate expose events for invalid
region in an idle. This replaces both the expose compression
and the redrawing queuing in GTK+. It is both more efficient and
simpler than either one individually and far more so then the
combination.
* gdk/x11/gdkgeometry.c gdk/x11/gdkwindow.c gdk/x11/gdkprivate-x11.h:
Emulate 32 bit coordinates for windows with 16 bit coordinates
by offsetting drawing, guffaw scrolling techniques and
mapping/unmapping child windows as necessary.
* gdk/gdkwindow.[ch] gdk/x11/gdkgeometry.c: Add anti-exposes,
where, when invalid regions are processed, the region is stored,
and if expose events come in that are detectably duplicate
the processed exposes (by comparison of event serial numbers),
the stored region is subtracted out of those exposes.
* gdk/x11/gdkgeometry.c: Temporarily unset backing pixmaps of
regions newly exposed when scrolling or resizing windows.
This, combined with forcing processesing of queued invalidated
regions, gives nice flicker-free scrolling.
* gtk/gtklayout.c gtk/gtkviewport.c: Force processing of
invalidated regions after every scroll.
* gtk/gtklayout.c: Vastly simplify using the new 32 bit coordinate
emulation in GDK. Its, for all practical purposes just a
GtkViewport/GtkFixed hybrid now.
* gdk/gdkdrawable-x11.c: Convert from GDK (32 bit) to X11
(16-bit) structures as necessary instead of just casting.
* gdk/x11/gdkgc-x11.c gdk/x11/gdkx.h: Replace XSetRegion with code
in terms of the structures from gdkregion-generic.c, using appropriate
offsets from GDK to X11 coordinates. Cache clip mask and
origin and ts origin locally and only flush to the server
when drawing, to avoid constantly setting and resetting these
values when offsetting GC's for scrolling and backing pixmaps.
* gdk/x11/gdkinput-x11.c: Fix leak of axes structures.
* gtk/gtkcontainer.c: Call process_all_updates at end
of resizing to reduce flicker. (Avoids having redraw
lag arbitrarily behind resize under some circumstances)
* gtk/gtkentry.c: Remove old backing store code, and simply take
advantage of the new backing store capabilities of GDK.
* gtk/gtkmain.c: Simple implementation of widget backing
store - simply push a paint while handling each expose.
(Should really be configurable widget for widget.)
* gtk/gtkwidget.c: Remove all the old complicated redraw
code, and simply invalidate the GDK windows from
gdk_window_queue_clear(), etc. (Sigh, so much carefully
debugged complexity ... gone to the winds.)
Remove all the code for suppressing expose events while
resizes are pending; this isn't needed since the invalid
areas won't be processed until after the resizes are
processed, since they are in a lower priority idle.
Thu Feb 24 15:37:41 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkrectangle.c (gdk_rectangle_intersect): Set width
@ -34,13 +151,9 @@ Mon Dec 13 14:06:03 1999 Owen Taylor <otaylor@redhat.com>
of the background image instead of scaling the background down to
a line.
Wed Nov 24 13:02:17 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtk[hv]scrollbar.c (gtk_hscrollbar_size_allocate): Removed mysterious
which temporarily set slider to wrong size.
Tue Nov 23 15:48:35 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkaspectframe.c gtkbin.c: Remove unecessary calls to
queue_clear().

View File

@ -1,3 +1,120 @@
Thu Feb 24 18:11:46 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkinternals.h gdk/gdkprivate.h gdk/Makefile.am: Add a header file for
the _really_ internal stuff, and leave gdkprivate.h for the fake private
stuff that we've traditionally exposed.
* gdk/**.c: Use gdkinternals.h where appropriate.
* gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h gdk/x11/*.c: Make gdkx.h
not include gdkprivate-x11.h, move all stuff of conceivable public
interest into gdkx.h; keep all really private stuff in
uninstalled header gdkprivate-x11.h.
* gdk/gdkdraw.c gdk/gdkwindow.c gdk/gdkinternals: Redirect all calls to
image->image_put on windows through a new function _gdk_window_draw_image()
to allow us to do backing store for images. (Sort of ugly)
* gdk/gdkgc.c gdk/gdkprivate.h: Cache the ts and clip origins for graphics
contexts locally so that we can offset them properly when drawing
onto backing pixmaps.
* gdk/gdkinput.h: Reindented
* gdk/gdkprivate.h gdk/x11/gdkwindow-x11.c: Store the background
pixmap or color for the window, so we can properly initialize
our double-buffer pixmaps, and also so that we temporarily set
a background of None while scrolling.
* gdk/gdkregion.h: Revise region boolean operators to have an
interface that is actually convenient - switch from creating new
regions on every op, to "methods" that modify existing regions
(A = A OP B). 3 argument forms which allow dest == src, would also
be possible, but the current interfaces seem to map nicely
onto what needs to be done. (There is quite a lot of region
code in GDK now.)
* gdk/gdkregion.h: Add constructor from rectangle and a copy
operator.
* gdk/x11/{gdkregion-generic.[ch],gdkpolyreg-generic.c,
gdkpoly-generic.h: Copy region code from Xlib, switch it over
to 32 bit coordinates, modify it to be mostly GTK+ style
and to have interfaces that match gdkregion.h.
* gdk/gdkwindow.c gdk/gdkprivate.h: Add facility for
double-buffered drawing. gdk_window_begin_paint_{rect,region}()
create a backing pixmap and redirect all drawing to
that backing pixmap until a matching gdk_window_end_paint().
* gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkdrawable-x11.c:
Create a special drawable class for GtkWindow's that
redirects the drawing to the backing pixmap as necessary
and then calls the real operations in _gdk_windowing_window_class.
* gdk/gdkprivate.h gdk/gdkwindow.[ch] gdk/x11/gdkevents-x11.c:
Store invalid region for each window. Generate expose events for invalid
region in an idle. This replaces both the expose compression
and the redrawing queuing in GTK+. It is both more efficient and
simpler than either one individually and far more so then the
combination.
* gdk/x11/gdkgeometry.c gdk/x11/gdkwindow.c gdk/x11/gdkprivate-x11.h:
Emulate 32 bit coordinates for windows with 16 bit coordinates
by offsetting drawing, guffaw scrolling techniques and
mapping/unmapping child windows as necessary.
* gdk/gdkwindow.[ch] gdk/x11/gdkgeometry.c: Add anti-exposes,
where, when invalid regions are processed, the region is stored,
and if expose events come in that are detectably duplicate
the processed exposes (by comparison of event serial numbers),
the stored region is subtracted out of those exposes.
* gdk/x11/gdkgeometry.c: Temporarily unset backing pixmaps of
regions newly exposed when scrolling or resizing windows.
This, combined with forcing processesing of queued invalidated
regions, gives nice flicker-free scrolling.
* gtk/gtklayout.c gtk/gtkviewport.c: Force processing of
invalidated regions after every scroll.
* gtk/gtklayout.c: Vastly simplify using the new 32 bit coordinate
emulation in GDK. Its, for all practical purposes just a
GtkViewport/GtkFixed hybrid now.
* gdk/gdkdrawable-x11.c: Convert from GDK (32 bit) to X11
(16-bit) structures as necessary instead of just casting.
* gdk/x11/gdkgc-x11.c gdk/x11/gdkx.h: Replace XSetRegion with code
in terms of the structures from gdkregion-generic.c, using appropriate
offsets from GDK to X11 coordinates. Cache clip mask and
origin and ts origin locally and only flush to the server
when drawing, to avoid constantly setting and resetting these
values when offsetting GC's for scrolling and backing pixmaps.
* gdk/x11/gdkinput-x11.c: Fix leak of axes structures.
* gtk/gtkcontainer.c: Call process_all_updates at end
of resizing to reduce flicker. (Avoids having redraw
lag arbitrarily behind resize under some circumstances)
* gtk/gtkentry.c: Remove old backing store code, and simply take
advantage of the new backing store capabilities of GDK.
* gtk/gtkmain.c: Simple implementation of widget backing
store - simply push a paint while handling each expose.
(Should really be configurable widget for widget.)
* gtk/gtkwidget.c: Remove all the old complicated redraw
code, and simply invalidate the GDK windows from
gdk_window_queue_clear(), etc. (Sigh, so much carefully
debugged complexity ... gone to the winds.)
Remove all the code for suppressing expose events while
resizes are pending; this isn't needed since the invalid
areas won't be processed until after the resizes are
processed, since they are in a lower priority idle.
Thu Feb 24 15:37:41 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkrectangle.c (gdk_rectangle_intersect): Set width
@ -34,13 +151,9 @@ Mon Dec 13 14:06:03 1999 Owen Taylor <otaylor@redhat.com>
of the background image instead of scaling the background down to
a line.
Wed Nov 24 13:02:17 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtk[hv]scrollbar.c (gtk_hscrollbar_size_allocate): Removed mysterious
which temporarily set slider to wrong size.
Tue Nov 23 15:48:35 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkaspectframe.c gtkbin.c: Remove unecessary calls to
queue_clear().

View File

@ -1,3 +1,120 @@
Thu Feb 24 18:11:46 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkinternals.h gdk/gdkprivate.h gdk/Makefile.am: Add a header file for
the _really_ internal stuff, and leave gdkprivate.h for the fake private
stuff that we've traditionally exposed.
* gdk/**.c: Use gdkinternals.h where appropriate.
* gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h gdk/x11/*.c: Make gdkx.h
not include gdkprivate-x11.h, move all stuff of conceivable public
interest into gdkx.h; keep all really private stuff in
uninstalled header gdkprivate-x11.h.
* gdk/gdkdraw.c gdk/gdkwindow.c gdk/gdkinternals: Redirect all calls to
image->image_put on windows through a new function _gdk_window_draw_image()
to allow us to do backing store for images. (Sort of ugly)
* gdk/gdkgc.c gdk/gdkprivate.h: Cache the ts and clip origins for graphics
contexts locally so that we can offset them properly when drawing
onto backing pixmaps.
* gdk/gdkinput.h: Reindented
* gdk/gdkprivate.h gdk/x11/gdkwindow-x11.c: Store the background
pixmap or color for the window, so we can properly initialize
our double-buffer pixmaps, and also so that we temporarily set
a background of None while scrolling.
* gdk/gdkregion.h: Revise region boolean operators to have an
interface that is actually convenient - switch from creating new
regions on every op, to "methods" that modify existing regions
(A = A OP B). 3 argument forms which allow dest == src, would also
be possible, but the current interfaces seem to map nicely
onto what needs to be done. (There is quite a lot of region
code in GDK now.)
* gdk/gdkregion.h: Add constructor from rectangle and a copy
operator.
* gdk/x11/{gdkregion-generic.[ch],gdkpolyreg-generic.c,
gdkpoly-generic.h: Copy region code from Xlib, switch it over
to 32 bit coordinates, modify it to be mostly GTK+ style
and to have interfaces that match gdkregion.h.
* gdk/gdkwindow.c gdk/gdkprivate.h: Add facility for
double-buffered drawing. gdk_window_begin_paint_{rect,region}()
create a backing pixmap and redirect all drawing to
that backing pixmap until a matching gdk_window_end_paint().
* gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkdrawable-x11.c:
Create a special drawable class for GtkWindow's that
redirects the drawing to the backing pixmap as necessary
and then calls the real operations in _gdk_windowing_window_class.
* gdk/gdkprivate.h gdk/gdkwindow.[ch] gdk/x11/gdkevents-x11.c:
Store invalid region for each window. Generate expose events for invalid
region in an idle. This replaces both the expose compression
and the redrawing queuing in GTK+. It is both more efficient and
simpler than either one individually and far more so then the
combination.
* gdk/x11/gdkgeometry.c gdk/x11/gdkwindow.c gdk/x11/gdkprivate-x11.h:
Emulate 32 bit coordinates for windows with 16 bit coordinates
by offsetting drawing, guffaw scrolling techniques and
mapping/unmapping child windows as necessary.
* gdk/gdkwindow.[ch] gdk/x11/gdkgeometry.c: Add anti-exposes,
where, when invalid regions are processed, the region is stored,
and if expose events come in that are detectably duplicate
the processed exposes (by comparison of event serial numbers),
the stored region is subtracted out of those exposes.
* gdk/x11/gdkgeometry.c: Temporarily unset backing pixmaps of
regions newly exposed when scrolling or resizing windows.
This, combined with forcing processesing of queued invalidated
regions, gives nice flicker-free scrolling.
* gtk/gtklayout.c gtk/gtkviewport.c: Force processing of
invalidated regions after every scroll.
* gtk/gtklayout.c: Vastly simplify using the new 32 bit coordinate
emulation in GDK. Its, for all practical purposes just a
GtkViewport/GtkFixed hybrid now.
* gdk/gdkdrawable-x11.c: Convert from GDK (32 bit) to X11
(16-bit) structures as necessary instead of just casting.
* gdk/x11/gdkgc-x11.c gdk/x11/gdkx.h: Replace XSetRegion with code
in terms of the structures from gdkregion-generic.c, using appropriate
offsets from GDK to X11 coordinates. Cache clip mask and
origin and ts origin locally and only flush to the server
when drawing, to avoid constantly setting and resetting these
values when offsetting GC's for scrolling and backing pixmaps.
* gdk/x11/gdkinput-x11.c: Fix leak of axes structures.
* gtk/gtkcontainer.c: Call process_all_updates at end
of resizing to reduce flicker. (Avoids having redraw
lag arbitrarily behind resize under some circumstances)
* gtk/gtkentry.c: Remove old backing store code, and simply take
advantage of the new backing store capabilities of GDK.
* gtk/gtkmain.c: Simple implementation of widget backing
store - simply push a paint while handling each expose.
(Should really be configurable widget for widget.)
* gtk/gtkwidget.c: Remove all the old complicated redraw
code, and simply invalidate the GDK windows from
gdk_window_queue_clear(), etc. (Sigh, so much carefully
debugged complexity ... gone to the winds.)
Remove all the code for suppressing expose events while
resizes are pending; this isn't needed since the invalid
areas won't be processed until after the resizes are
processed, since they are in a lower priority idle.
Thu Feb 24 15:37:41 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkrectangle.c (gdk_rectangle_intersect): Set width
@ -34,13 +151,9 @@ Mon Dec 13 14:06:03 1999 Owen Taylor <otaylor@redhat.com>
of the background image instead of scaling the background down to
a line.
Wed Nov 24 13:02:17 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtk[hv]scrollbar.c (gtk_hscrollbar_size_allocate): Removed mysterious
which temporarily set slider to wrong size.
Tue Nov 23 15:48:35 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkaspectframe.c gtkbin.c: Remove unecessary calls to
queue_clear().

View File

@ -1,3 +1,120 @@
Thu Feb 24 18:11:46 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkinternals.h gdk/gdkprivate.h gdk/Makefile.am: Add a header file for
the _really_ internal stuff, and leave gdkprivate.h for the fake private
stuff that we've traditionally exposed.
* gdk/**.c: Use gdkinternals.h where appropriate.
* gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h gdk/x11/*.c: Make gdkx.h
not include gdkprivate-x11.h, move all stuff of conceivable public
interest into gdkx.h; keep all really private stuff in
uninstalled header gdkprivate-x11.h.
* gdk/gdkdraw.c gdk/gdkwindow.c gdk/gdkinternals: Redirect all calls to
image->image_put on windows through a new function _gdk_window_draw_image()
to allow us to do backing store for images. (Sort of ugly)
* gdk/gdkgc.c gdk/gdkprivate.h: Cache the ts and clip origins for graphics
contexts locally so that we can offset them properly when drawing
onto backing pixmaps.
* gdk/gdkinput.h: Reindented
* gdk/gdkprivate.h gdk/x11/gdkwindow-x11.c: Store the background
pixmap or color for the window, so we can properly initialize
our double-buffer pixmaps, and also so that we temporarily set
a background of None while scrolling.
* gdk/gdkregion.h: Revise region boolean operators to have an
interface that is actually convenient - switch from creating new
regions on every op, to "methods" that modify existing regions
(A = A OP B). 3 argument forms which allow dest == src, would also
be possible, but the current interfaces seem to map nicely
onto what needs to be done. (There is quite a lot of region
code in GDK now.)
* gdk/gdkregion.h: Add constructor from rectangle and a copy
operator.
* gdk/x11/{gdkregion-generic.[ch],gdkpolyreg-generic.c,
gdkpoly-generic.h: Copy region code from Xlib, switch it over
to 32 bit coordinates, modify it to be mostly GTK+ style
and to have interfaces that match gdkregion.h.
* gdk/gdkwindow.c gdk/gdkprivate.h: Add facility for
double-buffered drawing. gdk_window_begin_paint_{rect,region}()
create a backing pixmap and redirect all drawing to
that backing pixmap until a matching gdk_window_end_paint().
* gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkdrawable-x11.c:
Create a special drawable class for GtkWindow's that
redirects the drawing to the backing pixmap as necessary
and then calls the real operations in _gdk_windowing_window_class.
* gdk/gdkprivate.h gdk/gdkwindow.[ch] gdk/x11/gdkevents-x11.c:
Store invalid region for each window. Generate expose events for invalid
region in an idle. This replaces both the expose compression
and the redrawing queuing in GTK+. It is both more efficient and
simpler than either one individually and far more so then the
combination.
* gdk/x11/gdkgeometry.c gdk/x11/gdkwindow.c gdk/x11/gdkprivate-x11.h:
Emulate 32 bit coordinates for windows with 16 bit coordinates
by offsetting drawing, guffaw scrolling techniques and
mapping/unmapping child windows as necessary.
* gdk/gdkwindow.[ch] gdk/x11/gdkgeometry.c: Add anti-exposes,
where, when invalid regions are processed, the region is stored,
and if expose events come in that are detectably duplicate
the processed exposes (by comparison of event serial numbers),
the stored region is subtracted out of those exposes.
* gdk/x11/gdkgeometry.c: Temporarily unset backing pixmaps of
regions newly exposed when scrolling or resizing windows.
This, combined with forcing processesing of queued invalidated
regions, gives nice flicker-free scrolling.
* gtk/gtklayout.c gtk/gtkviewport.c: Force processing of
invalidated regions after every scroll.
* gtk/gtklayout.c: Vastly simplify using the new 32 bit coordinate
emulation in GDK. Its, for all practical purposes just a
GtkViewport/GtkFixed hybrid now.
* gdk/gdkdrawable-x11.c: Convert from GDK (32 bit) to X11
(16-bit) structures as necessary instead of just casting.
* gdk/x11/gdkgc-x11.c gdk/x11/gdkx.h: Replace XSetRegion with code
in terms of the structures from gdkregion-generic.c, using appropriate
offsets from GDK to X11 coordinates. Cache clip mask and
origin and ts origin locally and only flush to the server
when drawing, to avoid constantly setting and resetting these
values when offsetting GC's for scrolling and backing pixmaps.
* gdk/x11/gdkinput-x11.c: Fix leak of axes structures.
* gtk/gtkcontainer.c: Call process_all_updates at end
of resizing to reduce flicker. (Avoids having redraw
lag arbitrarily behind resize under some circumstances)
* gtk/gtkentry.c: Remove old backing store code, and simply take
advantage of the new backing store capabilities of GDK.
* gtk/gtkmain.c: Simple implementation of widget backing
store - simply push a paint while handling each expose.
(Should really be configurable widget for widget.)
* gtk/gtkwidget.c: Remove all the old complicated redraw
code, and simply invalidate the GDK windows from
gdk_window_queue_clear(), etc. (Sigh, so much carefully
debugged complexity ... gone to the winds.)
Remove all the code for suppressing expose events while
resizes are pending; this isn't needed since the invalid
areas won't be processed until after the resizes are
processed, since they are in a lower priority idle.
Thu Feb 24 15:37:41 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkrectangle.c (gdk_rectangle_intersect): Set width
@ -34,13 +151,9 @@ Mon Dec 13 14:06:03 1999 Owen Taylor <otaylor@redhat.com>
of the background image instead of scaling the background down to
a line.
Wed Nov 24 13:02:17 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtk[hv]scrollbar.c (gtk_hscrollbar_size_allocate): Removed mysterious
which temporarily set slider to wrong size.
Tue Nov 23 15:48:35 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkaspectframe.c gtkbin.c: Remove unecessary calls to
queue_clear().

View File

@ -1,3 +1,120 @@
Thu Feb 24 18:11:46 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkinternals.h gdk/gdkprivate.h gdk/Makefile.am: Add a header file for
the _really_ internal stuff, and leave gdkprivate.h for the fake private
stuff that we've traditionally exposed.
* gdk/**.c: Use gdkinternals.h where appropriate.
* gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h gdk/x11/*.c: Make gdkx.h
not include gdkprivate-x11.h, move all stuff of conceivable public
interest into gdkx.h; keep all really private stuff in
uninstalled header gdkprivate-x11.h.
* gdk/gdkdraw.c gdk/gdkwindow.c gdk/gdkinternals: Redirect all calls to
image->image_put on windows through a new function _gdk_window_draw_image()
to allow us to do backing store for images. (Sort of ugly)
* gdk/gdkgc.c gdk/gdkprivate.h: Cache the ts and clip origins for graphics
contexts locally so that we can offset them properly when drawing
onto backing pixmaps.
* gdk/gdkinput.h: Reindented
* gdk/gdkprivate.h gdk/x11/gdkwindow-x11.c: Store the background
pixmap or color for the window, so we can properly initialize
our double-buffer pixmaps, and also so that we temporarily set
a background of None while scrolling.
* gdk/gdkregion.h: Revise region boolean operators to have an
interface that is actually convenient - switch from creating new
regions on every op, to "methods" that modify existing regions
(A = A OP B). 3 argument forms which allow dest == src, would also
be possible, but the current interfaces seem to map nicely
onto what needs to be done. (There is quite a lot of region
code in GDK now.)
* gdk/gdkregion.h: Add constructor from rectangle and a copy
operator.
* gdk/x11/{gdkregion-generic.[ch],gdkpolyreg-generic.c,
gdkpoly-generic.h: Copy region code from Xlib, switch it over
to 32 bit coordinates, modify it to be mostly GTK+ style
and to have interfaces that match gdkregion.h.
* gdk/gdkwindow.c gdk/gdkprivate.h: Add facility for
double-buffered drawing. gdk_window_begin_paint_{rect,region}()
create a backing pixmap and redirect all drawing to
that backing pixmap until a matching gdk_window_end_paint().
* gdk/gdkwindow.[ch] gdk/gdkinternals.h gdk/x11/gdkdrawable-x11.c:
Create a special drawable class for GtkWindow's that
redirects the drawing to the backing pixmap as necessary
and then calls the real operations in _gdk_windowing_window_class.
* gdk/gdkprivate.h gdk/gdkwindow.[ch] gdk/x11/gdkevents-x11.c:
Store invalid region for each window. Generate expose events for invalid
region in an idle. This replaces both the expose compression
and the redrawing queuing in GTK+. It is both more efficient and
simpler than either one individually and far more so then the
combination.
* gdk/x11/gdkgeometry.c gdk/x11/gdkwindow.c gdk/x11/gdkprivate-x11.h:
Emulate 32 bit coordinates for windows with 16 bit coordinates
by offsetting drawing, guffaw scrolling techniques and
mapping/unmapping child windows as necessary.
* gdk/gdkwindow.[ch] gdk/x11/gdkgeometry.c: Add anti-exposes,
where, when invalid regions are processed, the region is stored,
and if expose events come in that are detectably duplicate
the processed exposes (by comparison of event serial numbers),
the stored region is subtracted out of those exposes.
* gdk/x11/gdkgeometry.c: Temporarily unset backing pixmaps of
regions newly exposed when scrolling or resizing windows.
This, combined with forcing processesing of queued invalidated
regions, gives nice flicker-free scrolling.
* gtk/gtklayout.c gtk/gtkviewport.c: Force processing of
invalidated regions after every scroll.
* gtk/gtklayout.c: Vastly simplify using the new 32 bit coordinate
emulation in GDK. Its, for all practical purposes just a
GtkViewport/GtkFixed hybrid now.
* gdk/gdkdrawable-x11.c: Convert from GDK (32 bit) to X11
(16-bit) structures as necessary instead of just casting.
* gdk/x11/gdkgc-x11.c gdk/x11/gdkx.h: Replace XSetRegion with code
in terms of the structures from gdkregion-generic.c, using appropriate
offsets from GDK to X11 coordinates. Cache clip mask and
origin and ts origin locally and only flush to the server
when drawing, to avoid constantly setting and resetting these
values when offsetting GC's for scrolling and backing pixmaps.
* gdk/x11/gdkinput-x11.c: Fix leak of axes structures.
* gtk/gtkcontainer.c: Call process_all_updates at end
of resizing to reduce flicker. (Avoids having redraw
lag arbitrarily behind resize under some circumstances)
* gtk/gtkentry.c: Remove old backing store code, and simply take
advantage of the new backing store capabilities of GDK.
* gtk/gtkmain.c: Simple implementation of widget backing
store - simply push a paint while handling each expose.
(Should really be configurable widget for widget.)
* gtk/gtkwidget.c: Remove all the old complicated redraw
code, and simply invalidate the GDK windows from
gdk_window_queue_clear(), etc. (Sigh, so much carefully
debugged complexity ... gone to the winds.)
Remove all the code for suppressing expose events while
resizes are pending; this isn't needed since the invalid
areas won't be processed until after the resizes are
processed, since they are in a lower priority idle.
Thu Feb 24 15:37:41 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkrectangle.c (gdk_rectangle_intersect): Set width
@ -34,13 +151,9 @@ Mon Dec 13 14:06:03 1999 Owen Taylor <otaylor@redhat.com>
of the background image instead of scaling the background down to
a line.
Wed Nov 24 13:02:17 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtk[hv]scrollbar.c (gtk_hscrollbar_size_allocate): Removed mysterious
which temporarily set slider to wrong size.
Tue Nov 23 15:48:35 1999 Owen Taylor <otaylor@redhat.com>
* gtk/gtkaspectframe.c gtkbin.c: Remove unecessary calls to
queue_clear().

View File

@ -83,6 +83,7 @@ gdk_c_sources = @STRIP_BEGIN@ \
gdkgc.c \
gdkglobals.c \
gdkimage.c \
gdkinternals.h \
gdkrgb.c \
gdkrectangle.c \
gdkwindow.c \

View File

@ -30,7 +30,7 @@
#include <stdlib.h>
#include "gdk.h"
#include "gdkprivate.h"
#include "gdkinternals.h"
#ifndef HAVE_XCONVERTCASE
#include "gdkkeysyms.h"

View File

@ -351,17 +351,6 @@ gdk_draw_drawable (GdkDrawable *drawable,
width, height);
}
extern void
_gdk_window_draw_image (GdkDrawable *drawable,
GdkGC *gc,
GdkImage *image,
gint xsrc,
gint ysrc,
gint xdest,
gint ydest,
gint width,
gint height);
void
gdk_draw_image (GdkDrawable *drawable,
GdkGC *gc,

View File

@ -25,7 +25,7 @@
*/
#include "gdk.h"
#include "gdkprivate.h"
#include "gdkinternals.h"
typedef struct _GdkIOClosure GdkIOClosure;
typedef struct _GdkEventPrivate GdkEventPrivate;

210
gdk/gdkinternals.h Normal file
View File

@ -0,0 +1,210 @@
/* GDK - The GIMP Drawing Kit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/*
* Modified by the GTK+ Team and others 1997-1999. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
/* Uninstalled header defining types and functions internal to GDK */
#include <gdk/gdktypes.h>
#include <gdk/gdkprivate.h>
#ifndef __GDK_INTERNALS_H__
#define __GDK_INTERNALS_H__
/**********************
* General Facilities *
**********************/
/* Debugging support */
typedef enum {
GDK_DEBUG_MISC = 1 << 0,
GDK_DEBUG_EVENTS = 1 << 1,
GDK_DEBUG_DND = 1 << 2,
GDK_DEBUG_COLOR_CONTEXT = 1 << 3,
GDK_DEBUG_XIM = 1 << 4
} GdkDebugFlag;
extern gint gdk_debug_level;
extern gboolean gdk_show_events;
extern GList *gdk_default_filters;
GDKVAR guint gdk_debug_flags;
#ifdef G_ENABLE_DEBUG
#define GDK_NOTE(type,action) G_STMT_START { \
if (gdk_debug_flags & GDK_DEBUG_##type) \
{ action; }; } G_STMT_END
#else /* !G_ENABLE_DEBUG */
#define GDK_NOTE(type,action)
#endif /* G_ENABLE_DEBUG */
/* Arg parsing */
typedef enum
{
GDK_ARG_STRING,
GDK_ARG_INT,
GDK_ARG_BOOL,
GDK_ARG_NOBOOL,
GDK_ARG_CALLBACK
} GdkArgType;
typedef struct _GdkArgContext GdkArgContext;
typedef struct _GdkArgDesc GdkArgDesc;
typedef void (*GdkArgFunc) (const char *name, const char *arg, gpointer data);
struct _GdkArgContext
{
GPtrArray *tables;
gpointer cb_data;
};
struct _GdkArgDesc
{
const char *name;
GdkArgType type;
gpointer location;
GdkArgFunc callback;
};
/* Event handling */
extern GdkEventFunc gdk_event_func; /* Callback for events */
extern gpointer gdk_event_data;
extern GDestroyNotify gdk_event_notify;
/* FIFO's for event queue, and for events put back using
* gdk_event_put().
*/
extern GList *gdk_queued_events;
extern GList *gdk_queued_tail;
GdkEvent* gdk_event_new (void);
void gdk_events_init (void);
void gdk_events_queue (void);
GdkEvent* gdk_event_unqueue (void);
GList* gdk_event_queue_find_first (void);
void gdk_event_queue_remove_link (GList *node);
void gdk_event_queue_append (GdkEvent *event);
void gdk_event_button_generate (GdkEvent *event);
/*************************************
* Interfaces used by windowing code *
*************************************/
#ifdef USE_XIM
/* XIM support */
gint gdk_im_open (void);
void gdk_im_close (void);
void gdk_ic_cleanup (void);
#endif /* USE_XIM */
GdkWindow* _gdk_window_alloc (void);
void _gdk_window_draw_image (GdkDrawable *drawable,
GdkGC *gc,
GdkImage *image,
gint xsrc,
gint ysrc,
gint xdest,
gint ydest,
gint width,
gint height);
/*****************************************
* Interfaces provided by windowing code *
*****************************************/
/* Font/string functions implemented in module-specific code */
gint _gdk_font_strlen (GdkFont *font, const char *str);
void _gdk_font_destroy (GdkFont *font);
void _gdk_colormap_real_destroy (GdkColormap *colormap);
void _gdk_cursor_destroy (GdkCursor *cursor);
/* Class supplied by windowing-system-dependent code for GdkWindow.
*/
extern GdkDrawableClass _gdk_windowing_window_class;
/* Class for covering over windowing-system-dependent and backing-store
* code for GdkWindow
*/
extern GdkDrawableClass _gdk_window_class;
extern GdkArgDesc _gdk_windowing_args[];
gboolean _gdk_windowing_init_check (int argc,
char **argv);
void _gdk_windowing_window_get_offsets (GdkWindow *window,
gint *x_offset,
gint *y_offset);
void _gdk_windowing_window_clear_area (GdkWindow *window,
gint x,
gint y,
gint width,
gint height);
void _gdk_windowing_window_clear_area_e (GdkWindow *window,
gint x,
gint y,
gint width,
gint height);
/* Called before processing updates for a window. This gives the windowing
* layer a chance to save the region for later use in avoiding duplicate
* exposes. The return value indicates whether the function has a saved
* the region; if the result is TRUE, then the windowing layer is responsible
* for destroying the region later.
*/
gboolean _gdk_windowing_window_queue_antiexpose (GdkWindow *window,
GdkRegion *area);
/************************************
* Initialization and exit routines *
************************************/
void gdk_window_init (void);
void gdk_visual_init (void);
void gdk_dnd_init (void);
void gdk_image_init (void);
void gdk_image_exit (void);
void gdk_input_init (void);
void gdk_input_exit (void);
void gdk_windowing_exit (void);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __GDK_INTERNALS_H__ */

View File

@ -55,7 +55,6 @@ extern "C" {
#define gdk_font_lookup(xid) ((GdkFont*) gdk_xid_table_lookup (xid))
typedef struct _GdkDrawablePrivate GdkDrawablePrivate;
/* typedef struct _GdkDrawablePrivate GdkPixmapPrivate; */
typedef struct _GdkWindowPrivate GdkWindowPrivate;
typedef struct _GdkImageClass GdkImageClass;
typedef struct _GdkImagePrivate GdkImagePrivate;
@ -179,169 +178,11 @@ struct _GdkClientFilter {
gpointer data;
};
typedef enum
{
GDK_ARG_STRING,
GDK_ARG_INT,
GDK_ARG_BOOL,
GDK_ARG_NOBOOL,
GDK_ARG_CALLBACK
} GdkArgType;
typedef struct _GdkArgContext GdkArgContext;
typedef struct _GdkArgDesc GdkArgDesc;
typedef void (*GdkArgFunc) (const char *name, const char *arg, gpointer data);
struct _GdkArgContext
{
GPtrArray *tables;
gpointer cb_data;
};
struct _GdkArgDesc
{
const char *name;
GdkArgType type;
gpointer location;
GdkArgFunc callback;
};
typedef enum {
GDK_DEBUG_MISC = 1 << 0,
GDK_DEBUG_EVENTS = 1 << 1,
GDK_DEBUG_DND = 1 << 2,
GDK_DEBUG_COLOR_CONTEXT = 1 << 3,
GDK_DEBUG_XIM = 1 << 4
} GdkDebugFlag;
void gdk_event_button_generate (GdkEvent *event);
/* FIFO's for event queue, and for events put back using
* gdk_event_put().
*/
extern GList *gdk_queued_events;
extern GList *gdk_queued_tail;
extern GdkEventFunc gdk_event_func; /* Callback for events */
extern gpointer gdk_event_data;
extern GDestroyNotify gdk_event_notify;
GdkEvent* gdk_event_new (void);
void gdk_events_init (void);
void gdk_events_queue (void);
GdkEvent* gdk_event_unqueue (void);
GList* gdk_event_queue_find_first (void);
void gdk_event_queue_remove_link (GList *node);
void gdk_event_queue_append (GdkEvent *event);
void gdk_window_init (void);
void gdk_visual_init (void);
void gdk_dnd_init (void);
void gdk_image_init (void);
void gdk_image_exit (void);
void gdk_input_init (void);
void gdk_input_exit (void);
void gdk_windowing_exit (void);
void gdk_window_add_colormap_windows (GdkWindow *window);
void gdk_window_destroy_notify (GdkWindow *window);
/* If you pass x = y = -1, it queries the pointer
to find out where it currently is.
If you pass x = y = -2, it does anything necessary
to know that the drag is ending.
*/
void gdk_dnd_display_drag_cursor(gint x,
gint y,
gboolean drag_ok,
gboolean change_made);
extern gint gdk_debug_level;
extern gboolean gdk_show_events;
extern gint gdk_screen;
GDKVAR GdkWindow *gdk_parent_root;
GDKVAR gint gdk_error_code;
GDKVAR gint gdk_error_warnings;
extern GList *gdk_default_filters;
GdkWindow* _gdk_window_alloc (void);
/* Font/string functions implemented in module-specific code */
gint _gdk_font_strlen (GdkFont *font, const char *str);
void _gdk_font_destroy (GdkFont *font);
void _gdk_colormap_real_destroy (GdkColormap *colormap);
void _gdk_cursor_destroy (GdkCursor *cursor);
/* Initialization */
extern GdkArgDesc _gdk_windowing_args[];
gboolean _gdk_windowing_init_check (int argc,
char **argv);
void _gdk_windowing_window_get_offsets (GdkWindow *window,
gint *x_offset,
gint *y_offset);
void _gdk_windowing_window_clear_area (GdkWindow *window,
gint x,
gint y,
gint width,
gint height);
void _gdk_windowing_window_clear_area_e (GdkWindow *window,
gint x,
gint y,
gint width,
gint height);
/* Called before processing updates for a window. This gives the windowing
* layer a chance to save the region for later use in avoiding duplicate
* exposes. The return value indicates whether the function has a saved
* the region; if the result is TRUE, then the windowing layer is responsible
* for destroying the region later.
*/
gboolean _gdk_windowing_window_queue_antiexpose (GdkWindow *window,
GdkRegion *area);
#ifdef USE_XIM
/* XIM support */
gint gdk_im_open (void);
void gdk_im_close (void);
void gdk_ic_cleanup (void);
#endif /* USE_XIM */
/* Class supplied by windowing-system-dependent code for GdkWindow.
*/
extern GdkDrawableClass _gdk_windowing_window_class;
/* Class for covering over windowing-system-dependent and backing-store
* code for GdkWindow
*/
extern GdkDrawableClass _gdk_window_class;
/* Debugging support */
#ifdef G_ENABLE_DEBUG
#define GDK_NOTE(type,action) G_STMT_START { \
if (gdk_debug_flags & GDK_DEBUG_##type) \
{ action; }; } G_STMT_END
#else /* !G_ENABLE_DEBUG */
#define GDK_NOTE(type,action)
#endif /* G_ENABLE_DEBUG */
GDKVAR guint gdk_debug_flags;
#ifdef __cplusplus
}
@ -349,3 +190,8 @@ GDKVAR guint gdk_debug_flags;
#endif /* __GDK_PRIVATE_H__ */

View File

@ -25,7 +25,7 @@
*/
#include "gdkwindow.h"
#include "gdkprivate.h"
#include "gdkinternals.h"
#include "gdk.h" /* For gdk_rectangle_union() */
#include "gdkpixmap.h"
@ -971,7 +971,7 @@ gdk_window_clear_area_e (GdkWindow *window,
_gdk_windowing_window_clear_area_e (window, x, y, width, height);
}
extern void
void
_gdk_window_draw_image (GdkDrawable *drawable,
GdkGC *gc,
GdkImage *image,

View File

@ -67,6 +67,9 @@ libgdk_x11_la_SOURCES = \
gdkinputprivate.h \
$(xinput_sources)
INCLUDE_HEADERS = \
gdkx.h
EXTRA_PROGRAMS = gxid
bin_PROGRAMS = @xinput_progs@

View File

@ -68,6 +68,7 @@
#include "gdkcc.h"
#include "gdkcolor.h"
#include "gdkx.h"
#include "gdkinternals.h"
#define MAX_IMAGE_COLORS 256

View File

@ -27,7 +27,7 @@
#include <time.h>
#include "gdkcolor.h"
#include "gdkx.h"
#include "gdkprivate-x11.h"
static gint gdk_colormap_match_color (GdkColormap *cmap,
GdkColor *color,

View File

@ -31,8 +31,8 @@
#include "gdk.h" /* For gdk_flush() */
#include "gdkdnd.h"
#include "gdkproperty.h"
#include "gdkprivate.h"
#include "gdkx.h"
#include "gdkinternals.h"
#include "gdkprivate-x11.h"
typedef struct _GdkDragContextPrivate GdkDragContextPrivate;

View File

@ -1,4 +1,30 @@
#include "gdkx.h"
/* GDK - The GIMP Drawing Kit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/*
* Modified by the GTK+ Team and others 1997-1999. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
#include "gdkprivate-x11.h"
static void gdk_x11_drawable_destroy (GdkDrawable *drawable);

View File

@ -25,7 +25,8 @@
*/
#include "gdk.h"
#include "gdkprivate.h"
#include "gdkprivate-x11.h"
#include "gdkinternals.h"
#include "gdkx.h"
#include "gdkkeysyms.h"

View File

@ -27,7 +27,7 @@
#include <X11/Xlib.h>
#include <X11/Xos.h>
#include "gdkfont.h"
#include "gdkx.h"
#include "gdkprivate-x11.h"
static GHashTable *font_name_hash = NULL;
static GHashTable *fontset_name_hash = NULL;

View File

@ -29,9 +29,9 @@
#include "gdk.h" /* For gdk_flush() */
#include "gdkim.h"
#include "gdkpixmap.h"
#include "gdkprivate.h"
#include "gdki18n.h"
#include "gdkx.h"
#include "gdkinternals.h"
#include "gdkprivate-x11.h"
#if HAVE_CONFIG_H
# include <config.h>

View File

@ -56,7 +56,7 @@
#include "gdk.h" /* For gdk_error_trap_* / gdk_flush_* */
#include "gdkimage.h"
#include "gdkprivate.h"
#include "gdkx.h"
#include "gdkprivate-x11.h"
static void gdk_x11_image_destroy (GdkImage *image);
static void gdk_image_put_normal (GdkImage *image,

View File

@ -25,6 +25,7 @@
*/
#include "gdkinputprivate.h"
#include "gdkinternals.h"
#include "gdkx.h"
/* Forward declarations */

View File

@ -47,8 +47,8 @@
#include "gdk.h"
#include "gdkx.h"
#include "gdkprivate.h"
#include "gdkprivate-x11.h"
#include "gdkinternals.h"
#include "gdkinputprivate.h"
typedef struct _GdkPredicate GdkPredicate;

View File

@ -33,8 +33,7 @@
#include <X11/Xlib.h>
#include "gdkpixmap.h"
#include "gdkprivate.h"
#include "gdkx.h"
#include "gdkprivate-x11.h"
typedef struct
{

View File

@ -1,128 +1,42 @@
/* GDK - The GIMP Drawing Kit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/*
* Modified by the GTK+ Team and others 1997-1999. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
/*
* Private uninstalled header defining things local to X windowing code
*/
#ifndef __GDK_PRIVATE_X11_H__
#define __GDK_PRIVATE_X11_H__
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <gdk/gdkfont.h>
#include <gdk/gdkprivate.h>
#include <gdk/gdkcursor.h>
typedef struct _GdkGCXData GdkGCXData;
typedef struct _GdkDrawableXData GdkDrawableXData;
typedef struct _GdkWindowXData GdkWindowXData;
typedef struct _GdkXPositionInfo GdkXPositionInfo;
typedef struct _GdkColormapPrivateX GdkColormapPrivateX;
typedef struct _GdkCursorPrivate GdkCursorPrivate;
typedef struct _GdkFontPrivateX GdkFontPrivateX;
typedef struct _GdkImagePrivateX GdkImagePrivateX;
typedef struct _GdkVisualPrivate GdkVisualPrivate;
#ifdef USE_XIM
typedef struct _GdkICPrivate GdkICPrivate;
#endif /* USE_XIM */
#define GDK_DRAWABLE_XDATA(win) ((GdkDrawableXData *)(((GdkDrawablePrivate*)(win))->klass_data))
#define GDK_WINDOW_XDATA(win) ((GdkWindowXData *)(((GdkDrawablePrivate*)(win))->klass_data))
#define GDK_GC_XDATA(gc) ((GdkGCXData *)(((GdkGCPrivate*)(gc))->klass_data))
struct _GdkGCXData
{
GC xgc;
Display *xdisplay;
GdkRegion *clip_region;
guint dirty_mask;
};
struct _GdkDrawableXData
{
Window xid;
Display *xdisplay;
};
struct _GdkXPositionInfo
{
gint x;
gint y;
gint width;
gint height;
gint x_offset; /* Offsets to add to X coordinates within window */
gint y_offset; /* to get GDK coodinates within window */
gboolean big : 1;
gboolean mapped : 1;
gboolean no_bg : 1; /* Set when the window background is temporarily
* unset during resizing and scaling */
GdkRectangle clip_rect; /* visible rectangle of window */
};
struct _GdkWindowXData
{
GdkDrawableXData drawable_data;
GdkXPositionInfo position_info;
};
struct _GdkCursorPrivate
{
GdkCursor cursor;
Cursor xcursor;
Display *xdisplay;
};
struct _GdkFontPrivateX
{
GdkFontPrivate base;
/* XFontStruct *xfont; */
/* generic pointer point to XFontStruct or XFontSet */
gpointer xfont;
Display *xdisplay;
GSList *names;
};
struct _GdkVisualPrivate
{
GdkVisual visual;
Visual *xvisual;
};
struct _GdkColormapPrivateX
{
GdkColormapPrivate base;
Colormap xcolormap;
Display *xdisplay;
gint private_val;
GHashTable *hash;
GdkColorInfo *info;
time_t last_sync_time;
};
struct _GdkImagePrivateX
{
GdkImagePrivate base;
XImage *ximage;
Display *xdisplay;
gpointer x_shm_info;
};
#ifdef USE_XIM
struct _GdkICPrivate
{
XIC xic;
GdkICAttr *attr;
GdkICAttributesType mask;
};
#endif /* USE_XIM */
#include "gdkx.h"
void gdk_xid_table_insert (XID *xid,
gpointer data);
void gdk_xid_table_remove (XID xid);
gpointer gdk_xid_table_lookup (XID xid);
gint gdk_send_xevent (Window window,
gboolean propagate,
glong event_mask,
@ -133,6 +47,8 @@ GdkGC * _gdk_x11_gc_new (GdkDrawable *drawable,
GdkColormap * gdk_colormap_lookup (Colormap xcolormap);
GdkVisual * gdk_visual_lookup (Visual *xvisual);
void gdk_window_add_colormap_windows (GdkWindow *window);
/* Please see gdkwindow.c for comments on how to use */
Window gdk_window_xid_at (Window base,
gint bx,
@ -157,24 +73,13 @@ void _gdk_window_process_expose (GdkWindow *window,
gulong serial,
GdkRectangle *area);
#define GDK_GC_XGC(gc) (GDK_GC_XDATA(gc)->xgc)
#define GDK_GC_GET_XGC(gc) (GDK_GC_XDATA(gc)->dirty_mask ? _gdk_x11_gc_flush (gc) : GDK_GC_XGC (gc))
GC _gdk_x11_gc_flush (GdkGC *gc);
extern GdkDrawableClass _gdk_x11_drawable_class;
extern gboolean gdk_use_xshm;
extern gchar *gdk_display_name;
extern Display *gdk_display;
extern Window gdk_root_window;
extern Window gdk_leader_window;
extern Atom gdk_wm_delete_window;
extern Atom gdk_wm_take_focus;
extern Atom gdk_wm_protocols;
extern Atom gdk_wm_window_protocols[];
extern Atom gdk_selection_property;
extern GdkWindow *selection_owner[];
extern gchar *gdk_progclass;
extern gboolean gdk_null_window_warnings;
extern const int gdk_nevent_masks;
extern const int gdk_event_mask_table[];

View File

@ -31,7 +31,7 @@
#include "gdkproperty.h"
#include "gdkselection.h"
#include "gdkprivate.h"
#include "gdkx.h"
#include "gdkprivate-x11.h"
gint

View File

@ -29,6 +29,7 @@
#include "gdkvisual.h"
#include "gdkprivate-x11.h"
#include "gdkinternals.h"
static void gdk_visual_add (GdkVisual *visual);
static void gdk_visual_decompose_mask (gulong mask,

View File

@ -34,7 +34,7 @@
#include "gdkwindow.h"
#include "gdkinputprivate.h"
#include "gdkprivate-x11.h"
#include "gdkx.h"
#include "gdkinternals.h"
#include "MwmUtil.h"
#include <stdlib.h>

View File

@ -27,7 +27,122 @@
#ifndef __GDK_X_H__
#define __GDK_X_H__
#include <gdk/x11/gdkprivate-x11.h>
#include <gdk/gdkprivate.h>
#include <gdk/gdkcursor.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
typedef struct _GdkGCXData GdkGCXData;
typedef struct _GdkDrawableXData GdkDrawableXData;
typedef struct _GdkWindowXData GdkWindowXData;
typedef struct _GdkXPositionInfo GdkXPositionInfo;
typedef struct _GdkColormapPrivateX GdkColormapPrivateX;
typedef struct _GdkCursorPrivate GdkCursorPrivate;
typedef struct _GdkFontPrivateX GdkFontPrivateX;
typedef struct _GdkImagePrivateX GdkImagePrivateX;
typedef struct _GdkVisualPrivate GdkVisualPrivate;
#ifdef USE_XIM
typedef struct _GdkICPrivate GdkICPrivate;
#endif /* USE_XIM */
#define GDK_DRAWABLE_XDATA(win) ((GdkDrawableXData *)(((GdkDrawablePrivate*)(win))->klass_data))
#define GDK_WINDOW_XDATA(win) ((GdkWindowXData *)(((GdkDrawablePrivate*)(win))->klass_data))
#define GDK_GC_XDATA(gc) ((GdkGCXData *)(((GdkGCPrivate*)(gc))->klass_data))
struct _GdkGCXData
{
GC xgc;
Display *xdisplay;
GdkRegion *clip_region;
guint dirty_mask;
};
struct _GdkDrawableXData
{
Window xid;
Display *xdisplay;
};
struct _GdkXPositionInfo
{
gint x;
gint y;
gint width;
gint height;
gint x_offset; /* Offsets to add to X coordinates within window */
gint y_offset; /* to get GDK coodinates within window */
gboolean big : 1;
gboolean mapped : 1;
gboolean no_bg : 1; /* Set when the window background is temporarily
* unset during resizing and scaling */
GdkRectangle clip_rect; /* visible rectangle of window */
};
struct _GdkWindowXData
{
GdkDrawableXData drawable_data;
GdkXPositionInfo position_info;
};
struct _GdkCursorPrivate
{
GdkCursor cursor;
Cursor xcursor;
Display *xdisplay;
};
struct _GdkFontPrivateX
{
GdkFontPrivate base;
/* XFontStruct *xfont; */
/* generic pointer point to XFontStruct or XFontSet */
gpointer xfont;
Display *xdisplay;
GSList *names;
};
struct _GdkVisualPrivate
{
GdkVisual visual;
Visual *xvisual;
};
struct _GdkColormapPrivateX
{
GdkColormapPrivate base;
Colormap xcolormap;
Display *xdisplay;
gint private_val;
GHashTable *hash;
GdkColorInfo *info;
time_t last_sync_time;
};
struct _GdkImagePrivateX
{
GdkImagePrivate base;
XImage *ximage;
Display *xdisplay;
gpointer x_shm_info;
};
#ifdef USE_XIM
struct _GdkICPrivate
{
XIC xic;
GdkICAttr *attr;
GdkICAttributesType mask;
};
#endif /* USE_XIM */
#define GDK_ROOT_WINDOW() gdk_root_window
#define GDK_ROOT_PARENT() ((GdkWindow *)gdk_parent_root)
@ -43,9 +158,22 @@
#define GDK_FONT_XDISPLAY(font) (((GdkFontPrivate*) font)->xdisplay)
#define GDK_FONT_XFONT(font) (((GdkFontPrivateX *)font)->xfont)
#define GDK_GC_XGC(gc) (GDK_GC_XDATA(gc)->xgc)
#define GDK_GC_GET_XGC(gc) (GDK_GC_XDATA(gc)->dirty_mask ? _gdk_x11_gc_flush (gc) : GDK_GC_XGC (gc))
#define GDK_WINDOW_XWINDOW GDK_DRAWABLE_XID
#define GDK_WINDOW_XDISPLAY GDK_DRAWABLE_XDISPLAY
extern Display *gdk_display;
extern Window gdk_root_window;
extern gint gdk_screen;
extern gchar *gdk_display_name;
extern Window gdk_leader_window;
extern Atom gdk_selection_property;
extern gchar *gdk_progclass;
GdkVisual* gdkx_visual_get (VisualID xvisualid);
/* XXX: Do not use this function until it is fixed. An X Colormap
* is useless unless we also have the visual. */
@ -59,4 +187,9 @@ Window gdk_get_client_window (Display *dpy,
GdkPixmap *gdk_pixmap_foreign_new (guint32 anid);
GdkWindow *gdk_window_foreign_new (guint32 anid);
/* Return the Gdk* for a particular XID */
gpointer gdk_xid_table_lookup (XID xid);
GC _gdk_x11_gc_flush (GdkGC *gc);
#endif /* __GDK_X_H__ */

View File

@ -14,6 +14,7 @@ testtree
gtkcompat.h
testthreads
libgtk.la
gtkfeatures.h
gtkmarshal.h
gtktypebuiltins.h
gtkmarshal.c