Fixed the Ctrl+P shortcut problem reported by dalitz@infotech.de
The previous keystroke is not confused with a navigation control key when the window focus changes. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.0@1003 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
415db360a1
commit
0bd9018d64
@ -1,6 +1,6 @@
|
||||
#include <stdio.h>
|
||||
//
|
||||
// "$Id: Fl.cxx,v 1.24.2.15 2000/02/15 08:31:45 bill Exp $"
|
||||
// "$Id: Fl.cxx,v 1.24.2.16 2000/02/18 07:11:08 bill Exp $"
|
||||
//
|
||||
// Main event handling code for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
@ -352,6 +352,8 @@ void fl_fix_focus() {
|
||||
|
||||
if (Fl::grab()) return; // don't do anything while grab is on.
|
||||
|
||||
Fl::e_keysym = 0; // make sure it is not confused with navigation key
|
||||
|
||||
// set focus based on Fl::modal() and fl_xfocus
|
||||
Fl_Widget* w = fl_xfocus;
|
||||
if (w) {
|
||||
@ -480,12 +482,11 @@ int Fl::handle(int event, Fl_Window* window)
|
||||
window = 0;
|
||||
case FL_FOCUS:
|
||||
fl_xfocus = window;
|
||||
e_keysym = 0; // make sure it is not confused with navigation key
|
||||
fl_fix_focus();
|
||||
return 1;
|
||||
|
||||
case FL_KEYBOARD:
|
||||
fl_xfocus = window; // this should already be set, but just in case.
|
||||
fl_xfocus = window; // this should not happen! But maybe it does:
|
||||
|
||||
// Try it as keystroke, sending it to focus and all parents:
|
||||
for (w = grab() ? grab() : focus(); w; w = w->parent())
|
||||
@ -705,5 +706,5 @@ int fl_old_shortcut(const char* s) {
|
||||
}
|
||||
|
||||
//
|
||||
// End of "$Id: Fl.cxx,v 1.24.2.15 2000/02/15 08:31:45 bill Exp $".
|
||||
// End of "$Id: Fl.cxx,v 1.24.2.16 2000/02/18 07:11:08 bill Exp $".
|
||||
//
|
||||
|
@ -1,5 +1,5 @@
|
||||
//
|
||||
// "$Id: Fl_Group.cxx,v 1.8.2.3 1999/08/09 06:19:32 bill Exp $"
|
||||
// "$Id: Fl_Group.cxx,v 1.8.2.4 2000/02/18 07:11:09 bill Exp $"
|
||||
//
|
||||
// Group widget for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
@ -67,6 +67,8 @@ static int send(Fl_Widget* o, int event) {
|
||||
#define ctrl(x) (x^0x40)
|
||||
static int navkey() {
|
||||
switch (Fl::event_key()) {
|
||||
case 0: // not an FL_KEYBOARD/FL_SHORTCUT event
|
||||
break;
|
||||
case FL_Tab:
|
||||
if (!Fl::event_state(FL_SHIFT)) return FL_Right;
|
||||
case 0xfe20: // XK_ISO_Left_Tab
|
||||
@ -503,5 +505,5 @@ void Fl_Group::draw_outside_label(const Fl_Widget& w) const {
|
||||
}
|
||||
|
||||
//
|
||||
// End of "$Id: Fl_Group.cxx,v 1.8.2.3 1999/08/09 06:19:32 bill Exp $".
|
||||
// End of "$Id: Fl_Group.cxx,v 1.8.2.4 2000/02/18 07:11:09 bill Exp $".
|
||||
//
|
||||
|
@ -1,5 +1,5 @@
|
||||
//
|
||||
// "$Id: Fl_Input.cxx,v 1.10.2.4 1999/10/30 20:21:29 bill Exp $"
|
||||
// "$Id: Fl_Input.cxx,v 1.10.2.5 2000/02/18 07:11:09 bill Exp $"
|
||||
//
|
||||
// Input widget for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
@ -149,7 +149,8 @@ int Fl_Input::handle_key() {
|
||||
}
|
||||
}
|
||||
|
||||
if (Fl::event_state(FL_ALT|FL_META)) { // reserved for shortcuts
|
||||
if (Fl::event_state(FL_ALT|FL_META)
|
||||
&& !(Fl::event_length() && (key&128))) { // reserved for shortcuts
|
||||
compose = pcompose;
|
||||
return 0;
|
||||
}
|
||||
@ -345,5 +346,5 @@ Fl_Input::Fl_Input(int x, int y, int w, int h, const char *l)
|
||||
}
|
||||
|
||||
//
|
||||
// End of "$Id: Fl_Input.cxx,v 1.10.2.4 1999/10/30 20:21:29 bill Exp $".
|
||||
// End of "$Id: Fl_Input.cxx,v 1.10.2.5 2000/02/18 07:11:09 bill Exp $".
|
||||
//
|
||||
|
@ -1,5 +1,5 @@
|
||||
//
|
||||
// "$Id: Fl_x.cxx,v 1.24.2.11 2000/01/26 06:27:14 bill Exp $"
|
||||
// "$Id: Fl_x.cxx,v 1.24.2.12 2000/02/18 07:11:09 bill Exp $"
|
||||
//
|
||||
// X specific code for the Fast Light Tool Kit (FLTK).
|
||||
//
|
||||
@ -451,7 +451,9 @@ int fl_handle(const XEvent& xevent)
|
||||
fl_key_vector[keycode/8] |= (1 << (keycode%8));
|
||||
static char buffer[21];
|
||||
KeySym keysym;
|
||||
int len = XLookupString((XKeyEvent*)&(xevent.xkey),buffer,20,&keysym,0);
|
||||
//static XComposeStatus compose;
|
||||
int len = XLookupString((XKeyEvent*)&(xevent.xkey),
|
||||
buffer, 20, &keysym, 0/*&compose*/);
|
||||
if (keysym && keysym < 0x400) { // a character in latin-1,2,3,4 sets
|
||||
// force it to type a character (not sure if this ever is needed):
|
||||
if (!len) {buffer[0] = char(keysym); len = 1;}
|
||||
@ -878,5 +880,5 @@ void Fl_Window::make_current() {
|
||||
#endif
|
||||
|
||||
//
|
||||
// End of "$Id: Fl_x.cxx,v 1.24.2.11 2000/01/26 06:27:14 bill Exp $".
|
||||
// End of "$Id: Fl_x.cxx,v 1.24.2.12 2000/02/18 07:11:09 bill Exp $".
|
||||
//
|
||||
|
Loading…
x
Reference in New Issue
Block a user