Merge pull request #56 from taiyu-len/master

fixed handling of views with override_redirect (dmenu)
This commit is contained in:
Drew DeVault 2015-08-17 14:53:34 -04:00
commit 3b1bc2c11e

View file

@ -13,6 +13,8 @@
#include "container.h" #include "container.h"
static struct wlc_origin mouse_origin; static struct wlc_origin mouse_origin;
//Keyboard input is being overrided by window (dmenu)
static bool override_redirect = false;
static bool pointer_test(swayc_t *view, void *_origin) { static bool pointer_test(swayc_t *view, void *_origin) {
const struct wlc_origin *origin = _origin; const struct wlc_origin *origin = _origin;
@ -36,7 +38,7 @@ swayc_t *focus_pointer(void) {
if (pointer && focused != pointer) { if (pointer && focused != pointer) {
unfocus_all(&root_container); unfocus_all(&root_container);
focus_view(pointer); focus_view(pointer);
} else if (!focused){ } else if (!focused) {
focus_view(active_workspace); focus_view(active_workspace);
} }
focused = pointer; focused = pointer;
@ -98,6 +100,7 @@ static bool handle_view_created(wlc_handle handle) {
} }
// For things like Dmenu // For things like Dmenu
if (type & WLC_BIT_OVERRIDE_REDIRECT) { if (type & WLC_BIT_OVERRIDE_REDIRECT) {
override_redirect = true;
wlc_view_focus(handle); wlc_view_focus(handle);
} }
@ -140,8 +143,8 @@ static void handle_view_destroyed(wlc_handle handle) {
} }
if (type & WLC_BIT_OVERRIDE_REDIRECT) { if (type & WLC_BIT_OVERRIDE_REDIRECT) {
override_redirect = false;
focus_view(focus_pointer()); focus_view(focus_pointer());
arrange_windows(active_workspace, -1, -1);
return; return;
} }
if (type & WLC_BIT_POPUP) { if (type & WLC_BIT_POPUP) {
@ -221,6 +224,9 @@ static void handle_view_state_request(wlc_handle view, enum wlc_view_state_bit s
static bool handle_key(wlc_handle view, uint32_t time, const struct wlc_modifiers static bool handle_key(wlc_handle view, uint32_t time, const struct wlc_modifiers
*modifiers, uint32_t key, uint32_t sym, enum wlc_key_state state) { *modifiers, uint32_t key, uint32_t sym, enum wlc_key_state state) {
enum { QSIZE = 32 }; enum { QSIZE = 32 };
if (override_redirect) {
return false;
}
static uint8_t head = 0; static uint8_t head = 0;
static uint32_t array[QSIZE]; static uint32_t array[QSIZE];
bool cmd_success = false; bool cmd_success = false;