projects
/
goodguy
/
history.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
olaf neophyte and de.po updates, valgrind tweaks, delete green lady, inkscape dpi=96
[goodguy/history.git]
/
cinelerra-5.1
/
guicast
/
bcwindowbase.C
diff --git
a/cinelerra-5.1/guicast/bcwindowbase.C
b/cinelerra-5.1/guicast/bcwindowbase.C
index f5759dd853d31b196d46040781b359f57c766ad8..621c560acb4b5363df11985e77aca1a13a934847 100644
(file)
--- a/
cinelerra-5.1/guicast/bcwindowbase.C
+++ b/
cinelerra-5.1/guicast/bcwindowbase.C
@@
-1339,20
+1339,25
@@
locking_message = event->xclient.message_type;
case LeaveNotify:
if( event->xcrossing.mode != NotifyNormal ) break;
case LeaveNotify:
if( event->xcrossing.mode != NotifyNormal ) break;
- if( cursor_entered && event->xcrossing.window == win ) {
- cursor_entered = 0;
- }
+ cursor_entered = 0;
event_win = event->xany.window;
dispatch_cursor_leave();
break;
case EnterNotify:
if( event->xcrossing.mode != NotifyNormal ) break;
event_win = event->xany.window;
dispatch_cursor_leave();
break;
case EnterNotify:
if( event->xcrossing.mode != NotifyNormal ) break;
- if( !cursor_entered && event->xcrossing.window == win ) {
- if( !event->xcrossing.focus && get_resources()->grab_input_focus ) {
- XSetInputFocus(display, win, RevertToParent, CurrentTime);
+
+ if( !cursor_entered ) {
+ for( int i=0; i<popups.size(); ++i ) { // popups always take focus
+ if( popups[i]->win == event->xcrossing.window )
+ cursor_entered = 1;
+ }
+ if( !cursor_entered && get_resources()->grab_input_focus &&
+ !event->xcrossing.focus && event->xcrossing.window == win ) {
+ cursor_entered = 1;
}
}
- cursor_entered = 1;
+ if( cursor_entered )
+ focus();
}
event_win = event->xany.window;
cursor_x = event->xcrossing.x;
}
event_win = event->xany.window;
cursor_x = event->xcrossing.x;
@@
-4572,3
+4577,11
@@
void BC_WindowBase::flicker(int n, int ms)
set_opaque();
}
set_opaque();
}
+void BC_WindowBase::focus()
+{
+ XWindowAttributes xwa;
+ XGetWindowAttributes(top_level->display, top_level->win, &xwa);
+ if( xwa.map_state == IsViewable )
+ XSetInputFocus(top_level->display, top_level->win, RevertToParent, CurrentTime);
+}
+