Introduce --exclude-titlebar flag for mouse bindings. (#2703)
This introduces the flag --exclude-titlebar for mouse bindings which allows bindings like bindsym --whole-window --border --exclude-titlebar button3 focus fixes #2347
This commit is contained in:
committed by
Michael Stapelberg
parent
1d4e9f5de0
commit
d78fd8d91f
@ -56,12 +56,14 @@ static struct Mode *mode_from_name(const char *name, bool pango_markup) {
|
||||
*/
|
||||
Binding *configure_binding(const char *bindtype, const char *modifiers, const char *input_code,
|
||||
const char *release, const char *border, const char *whole_window,
|
||||
const char *command, const char *modename, bool pango_markup) {
|
||||
const char *exclude_titlebar, const char *command, const char *modename,
|
||||
bool pango_markup) {
|
||||
Binding *new_binding = scalloc(1, sizeof(Binding));
|
||||
DLOG("Binding %p bindtype %s, modifiers %s, input code %s, release %s\n", new_binding, bindtype, modifiers, input_code, release);
|
||||
new_binding->release = (release != NULL ? B_UPON_KEYRELEASE : B_UPON_KEYPRESS);
|
||||
new_binding->border = (border != NULL);
|
||||
new_binding->whole_window = (whole_window != NULL);
|
||||
new_binding->exclude_titlebar = (exclude_titlebar != NULL);
|
||||
if (strcmp(bindtype, "bindsym") == 0) {
|
||||
new_binding->input_type = (strncasecmp(input_code, "button", (sizeof("button") - 1)) == 0
|
||||
? B_MOUSE
|
||||
|
@ -186,7 +186,7 @@ static int route_click(Con *con, xcb_button_press_event_t *event, const bool mod
|
||||
if (dest == CLICK_DECORATION || dest == CLICK_INSIDE || dest == CLICK_BORDER) {
|
||||
Binding *bind = get_binding_from_xcb_event((xcb_generic_event_t *)event);
|
||||
|
||||
if (bind != NULL && (dest == CLICK_DECORATION ||
|
||||
if (bind != NULL && ((dest == CLICK_DECORATION && !bind->exclude_titlebar) ||
|
||||
(dest == CLICK_INSIDE && bind->whole_window) ||
|
||||
(dest == CLICK_BORDER && bind->border))) {
|
||||
CommandResult *result = run_binding(bind, con);
|
||||
|
@ -106,8 +106,8 @@ CFGFUN(font, const char *font) {
|
||||
font_pattern = sstrdup(font);
|
||||
}
|
||||
|
||||
CFGFUN(binding, const char *bindtype, const char *modifiers, const char *key, const char *release, const char *border, const char *whole_window, const char *command) {
|
||||
configure_binding(bindtype, modifiers, key, release, border, whole_window, command, DEFAULT_BINDING_MODE, false);
|
||||
CFGFUN(binding, const char *bindtype, const char *modifiers, const char *key, const char *release, const char *border, const char *whole_window, const char *exclude_titlebar, const char *command) {
|
||||
configure_binding(bindtype, modifiers, key, release, border, whole_window, exclude_titlebar, command, DEFAULT_BINDING_MODE, false);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
@ -117,8 +117,8 @@ CFGFUN(binding, const char *bindtype, const char *modifiers, const char *key, co
|
||||
static char *current_mode;
|
||||
static bool current_mode_pango_markup;
|
||||
|
||||
CFGFUN(mode_binding, const char *bindtype, const char *modifiers, const char *key, const char *release, const char *border, const char *whole_window, const char *command) {
|
||||
configure_binding(bindtype, modifiers, key, release, border, whole_window, command, current_mode, current_mode_pango_markup);
|
||||
CFGFUN(mode_binding, const char *bindtype, const char *modifiers, const char *key, const char *release, const char *border, const char *whole_window, const char *exclude_titlebar, const char *command) {
|
||||
configure_binding(bindtype, modifiers, key, release, border, whole_window, exclude_titlebar, command, current_mode, current_mode_pango_markup);
|
||||
}
|
||||
|
||||
CFGFUN(enter_mode, const char *pango_markup, const char *modename) {
|
||||
|
Reference in New Issue
Block a user