mirror of https://github.com/fltk/fltk
seen if configure was run with --enable-xdbe (default in FLTK 1.3, optional in FLTK 1.1). src/Fl_Double_Window.cxx/Fl_Double_Window::resize(): STR #2152: deallocate back buffer when window is enlarged in any dimension to force allocation of a new back buffer. This appears to be necessary for some window managers (e.g. Cygwin). src/Fl_Overlay_Window.cxx/Fl_Overlay_Window::flush() and src/Fl_Double_Window.cxx/Fl_Double_Window::flush(): STR #2197: make sure that the entire overlay window will be drawn after a window redraw, because Fl_Double_Window::flush(1) erases the overlay as documented. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7636 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
d7fdaf8262
commit
755f354ebe
1
CHANGES
1
CHANGES
|
@ -1,5 +1,6 @@
|
|||
CHANGES IN FLTK 1.3.0
|
||||
|
||||
- Fixed X11/XDBE double buffering (STR #2152, #2197)
|
||||
- Added new label and image alignments (STR #2269)
|
||||
- Added documentation for event delivery (STR #1983)
|
||||
- Fixed menu and tooltip window animation bug under X11 (compiz)
|
||||
|
|
|
@ -296,7 +296,7 @@ void Fl_Double_Window::flush(int eraseoverlay) {
|
|||
}
|
||||
#if USE_XDBE
|
||||
if (use_xdbe) {
|
||||
if (myi->backbuffer_bad) {
|
||||
if (myi->backbuffer_bad || eraseoverlay) {
|
||||
// Make sure we do a complete redraw...
|
||||
if (myi->region) {XDestroyRegion(myi->region); myi->region = 0;}
|
||||
clear_damage(FL_DAMAGE_ALL);
|
||||
|
@ -360,7 +360,15 @@ void Fl_Double_Window::resize(int X,int Y,int W,int H) {
|
|||
int oh = h();
|
||||
Fl_Window::resize(X,Y,W,H);
|
||||
#if USE_XDBE
|
||||
if (use_xdbe) return;
|
||||
if (use_xdbe) {
|
||||
Fl_X* myi = Fl_X::i(this);
|
||||
if (myi && myi->other_xid && (ow < w() || oh < h())) {
|
||||
// STR #2152: Deallocate the back buffer to force creation of a new one.
|
||||
XdbeDeallocateBackBufferName(fl_display,myi->other_xid);
|
||||
myi->other_xid = 0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
Fl_X* myi = Fl_X::i(this);
|
||||
if (myi && myi->other_xid && (ow != w() || oh != h())) {
|
||||
|
|
|
@ -61,7 +61,7 @@ void Fl_Overlay_Window::flush() {
|
|||
return;
|
||||
}
|
||||
#endif
|
||||
int erase_overlay = (damage()&FL_DAMAGE_OVERLAY);
|
||||
int erase_overlay = (damage()&FL_DAMAGE_OVERLAY) | (overlay_ == this);
|
||||
clear_damage((uchar)(damage()&~FL_DAMAGE_OVERLAY));
|
||||
Fl_Double_Window::flush(erase_overlay);
|
||||
if (overlay_ == this) draw_overlay();
|
||||
|
|
Loading…
Reference in New Issue