projects
/
goodguy
/
history.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rework histogram_bezier, init wm icon set_icon(gg), update de.po+msg/txt
[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..1ef0d5939cc8e697ae71ffe3a94b2bbcdc894b3b 100644
(file)
--- a/
cinelerra-5.1/guicast/bcwindowbase.C
+++ b/
cinelerra-5.1/guicast/bcwindowbase.C
@@
-62,7
+62,6
@@
#include <X11/XF86keysym.h>
#include <X11/Sunkeysym.h>
#include <X11/XF86keysym.h>
#include <X11/Sunkeysym.h>
-
BC_ResizeCall::BC_ResizeCall(int w, int h)
{
this->w = w;
BC_ResizeCall::BC_ResizeCall(int w, int h)
{
this->w = w;
@@
-547,6
+546,7
@@
int BC_WindowBase::create_window(BC_WindowBase *parent_window, const char *title
PropModeReplace, (unsigned char *)&XGroupLeader, true);
}
init_im();
PropModeReplace, (unsigned char *)&XGroupLeader, true);
}
init_im();
+ set_icon(get_resources()->default_icon);
}
#ifdef HAVE_LIBXXF86VM
}
#ifdef HAVE_LIBXXF86VM
@@
-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);
+}
+