XSetInputFocus und KeyPress eines Child.Fensters

25/03/2016 - 10:11 von Heinz-Mario Frühbeis | Report spam
Hallo,

ich such' mir g'rade 'nen Ast, ob ich was übersehen, oder was falsch
gemacht habe. Bei MouseOver beim Child-Fenster wird KeyPress aufgerufen
ohne (scheinbar?) den Keyboard-Focus zu haben...

Ich habe hier z. Bsp. ein Fenster mit einem Child-Fenster.
Bei ButtonPress setzte ich jeweils:

case ButtonPress: // 4
cout << "TXT BUTTON PRESS";
cout.flush();
bzw.
cout << "SECTION BUTTON PRESS";
cout.flush();

XSetInputFocus(nArea->GetDisplay(), nArea->Area(), RevertToNone,
CurrentTime);
break;

Und bei KeyPress:
case KeyPress: // 2
cout << "TXT KEY PRESS";
cout.flush();
bzw.
cout << "SECTION KEY PRESS";
cout.flush();
break;

Und für Focus noch:
case FocusIn: // 9
cout << "SECTION FOCUS IN";
cout.flush();
bzw.
cout << "TXT FOCUS IN";
cout.flush();
break;
case FocusOut: // 10
cout << "SECTION FOCUS OUT";
cout.flush();
bzw.
cout << "TXT FOCUS OUT";
cout.flush();
break;

Die Ausgabe ist:
SECTION FOCUS IN
TXT BUTTON PRESS
TXT FOCUS OUT
SECTION FOCUS OUT
TXT FOCUS IN
TXT KEY PRESS
TXT KEY PRESS
SECTION BUTTON PRESS
TXT FOCUS OUT
SECTION FOCUS IN
SECTION KEY PRESS
SECTION KEY PRESS
TXT KEY PRESS // Hier habe ich den Mousepointer über das Child-Fenster
bewegt
TXT KEY PRESS

Wenn ich also in/auf das Child-Fenster klicke, dann kommen nur dort
Keyboard-Events an, egal wo der Maus-Zeiger ist.
Wenn ich aber auf das Parent-Fenster klicke und den Mauszeiger über das
Child-Fenster bewege, dann bekommt das Child-Fenster die
Keyboard-Events..., was ich aber gar nicht möchte.

Woran liegt das? Und, wie kriege ich es hin, daß Keyboard-Events nur da
ankommen, wo der InputFocus gesetzt ist?

Mit Gruß
Heinz-Mario Frühbeis
 

Lesen sie die antworten

#1 Heinz-Mario Frühbeis
25/03/2016 - 10:18 | Warnen spam
Am 25.03.2016 um 10:11 schrieb Heinz-Mario Frühbeis:

Zur Komplettierung (fàllt mir also gerade noch ein):
Beim LWM ist das (quasi) auch so...
Da musste ich immer den Mauszeiger über einem Terminal-Fenster haben um
was eingeben zu können, wenn ich nicht explizit "Focus setzen"
ausgewàhlt habe.

Ähnliche fragen