projects
/
goodguy
/
cinelerra.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mem leaks, fix canvas_h bug, diamond for bezier entpts, aging_plugin segv, grab bound...
[goodguy/cinelerra.git]
/
cinelerra-5.1
/
guicast
/
bcwindowbase.C
diff --git
a/cinelerra-5.1/guicast/bcwindowbase.C
b/cinelerra-5.1/guicast/bcwindowbase.C
index 23e5bec4a7918345c1ca7bbb7384df62a4be56a1..5d177c930d22693fe631a1a3727a6ee15bd1dcd0 100644
(file)
--- a/
cinelerra-5.1/guicast/bcwindowbase.C
+++ b/
cinelerra-5.1/guicast/bcwindowbase.C
@@
-566,9
+566,8
@@
int BC_WindowBase::create_window(BC_WindowBase *parent_window, const char *title
mask = CWEventMask | CWBackPixel | CWColormap |
CWOverrideRedirect | CWSaveUnder | CWCursor;
mask = CWEventMask | CWBackPixel | CWColormap |
CWOverrideRedirect | CWSaveUnder | CWCursor;
- attr.event_mask = DEFAULT_EVENT_MASKS |
- KeyPressMask |
- KeyReleaseMask;
+ attr.event_mask = DEFAULT_EVENT_MASKS | ExposureMask |
+ KeyPressMask | KeyReleaseMask;
if(this->bg_color == -1)
this->bg_color = resources.get_bg_color();
if(this->bg_color == -1)
this->bg_color = resources.get_bg_color();
@@
-729,9
+728,8
@@
int BC_WindowBase::run_window()
init_lock->unlock();
// Handle common events
init_lock->unlock();
// Handle common events
- while(!done)
- {
- dispatch_event(0);
+ while( !done ) {
+ dispatch_event();
}
unset_all_repeaters();
}
unset_all_repeaters();
@@
-887,13
+885,14
@@
pthread_t locking_task = (pthread_t)-1L;
int locking_event = -1;
int locking_message = -1;
int locking_event = -1;
int locking_message = -1;
-int BC_WindowBase::dispatch_event(
XEvent *event
)
+int BC_WindowBase::dispatch_event()
{
Window tempwin;
int result;
XClientMessageEvent *ptr;
int cancel_resize, cancel_translation;
volatile static int debug = 0;
{
Window tempwin;
int result;
XClientMessageEvent *ptr;
int cancel_resize, cancel_translation;
volatile static int debug = 0;
+ XEvent *event;
key_pressed = 0;
key_pressed = 0;
@@
-1066,7
+1065,13
@@
if( debug && event->type != ClientMessage ) {
case Expose:
event_win = event->xany.window;
case Expose:
event_win = event->xany.window;
- dispatch_expose_event();
+ result = 0;
+ for( int i=0; !result && i<popups.size(); ++i ) { // popups take focus
+ if( popups[i]->win == event_win )
+ result = popups[i]->dispatch_expose_event();
+ }
+ if( !result )
+ result = dispatch_expose_event();
break;
case MotionNotify:
break;
case MotionNotify: