diff options
author | Julien Viard de Galbert <julien@vdg.blogsite.org> | 2012-11-06 20:04:57 (GMT) |
---|---|---|
committer | Mathias Gumz <akira at fluxbox dot org> | 2012-11-07 08:41:49 (GMT) |
commit | 5c5ad62846f9041684458c0ed38c4b135b7f294d (patch) | |
tree | 7543fbc124f1f7a175ef000f248129f85f06d9e5 /src/Window.cc | |
parent | e8f2e964c6a88e357bbc09b66cd3490cf9eed5ef (diff) | |
download | fluxbox_pavel-5c5ad62846f9041684458c0ed38c4b135b7f294d.zip fluxbox_pavel-5c5ad62846f9041684458c0ed38c4b135b7f294d.tar.bz2 |
Adds the OnTab keyword for the keys file
Adding the following lines to the keys file restore the old behaviour to
use Mouse2 on tabs to start tabbing, and keep OnTitlebar Mouse2 to lower
the window.
OnTab Mouse2 :StartTabbing
OnTab Move1 :StartMoving
Note: Internal tabs are triggering both OnTab and OnTitlebar events.
Diffstat (limited to 'src/Window.cc')
-rw-r--r-- | src/Window.cc | 58 |
1 files changed, 5 insertions, 53 deletions
diff --git a/src/Window.cc b/src/Window.cc index 2cf776e..1195127 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -2324,14 +2324,10 @@ void FluxboxWindow::buttonPressEvent(XButtonEvent &be) { | |||
2324 | m_last_button_y = be.y_root; | 2324 | m_last_button_y = be.y_root; |
2325 | m_last_pressed_button = be.button; | 2325 | m_last_pressed_button = be.button; |
2326 | 2326 | ||
2327 | bool onTitlebar = | ||
2328 | frame().insideTitlebar( be.window ) && | ||
2329 | frame().handle().window() != be.window; | ||
2330 | |||
2331 | Keys *k = Fluxbox::instance()->keys(); | 2327 | Keys *k = Fluxbox::instance()->keys(); |
2332 | if ((onTitlebar && k->doAction(be.type, be.state, be.button, Keys::ON_TITLEBAR, &winClient(), be.time)) || | 2328 | int context = frame().getContext(be.window); |
2333 | k->doAction(be.type, be.state, be.button, Keys::ON_WINDOW, &winClient(), be.time)) { | 2329 | if (k->doAction(be.type, be.state, be.button, |
2334 | 2330 | context, &winClient(), be.time)) { | |
2335 | return; | 2331 | return; |
2336 | } | 2332 | } |
2337 | 2333 | ||
@@ -2382,60 +2378,16 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) { | |||
2382 | me.window = frame().window().window(); | 2378 | me.window = frame().window().window(); |
2383 | } | 2379 | } |
2384 | 2380 | ||
2385 | bool inside_titlebar = frame().insideTitlebar( me.window ); | 2381 | int context = frame().getContext(me.window, me.x_root, me.y_root, m_last_button_x, m_last_button_y, true); |
2386 | bool inside_grips = (me.window == frame().gripRight() || me.window == frame().gripLeft()); | ||
2387 | bool inside_border = false; | ||
2388 | |||
2389 | if (!inside_grips) | ||
2390 | { | ||
2391 | using RectangleUtil::insideBorder; | ||
2392 | int borderw = frame().window().borderWidth(); | ||
2393 | |||
2394 | |||
2395 | //!! TODO(tabs): the below test ought to be in FbWinFrame | ||
2396 | |||
2397 | inside_border = | ||
2398 | |||
2399 | // if mouse is currently on the window border, ignore it | ||
2400 | ( | ||
2401 | ! insideBorder(frame(), me.x_root, me.y_root, borderw) | ||
2402 | && ( !frame().externalTabMode() | ||
2403 | || ! insideBorder(frame().tabcontainer(), me.x_root, me.y_root, borderw) ) | ||
2404 | |||
2405 | ) | ||
2406 | |||
2407 | || // or if mouse was on border when it was last clicked | ||
2408 | |||
2409 | ( | ||
2410 | ! insideBorder(frame(), m_last_button_x, m_last_button_y, borderw) | ||
2411 | && | ||
2412 | ( ! frame().externalTabMode() | ||
2413 | || ! insideBorder(frame().tabcontainer(), m_last_button_x, m_last_button_y, borderw ) | ||
2414 | ) | ||
2415 | ); | ||
2416 | } | ||
2417 | 2382 | ||
2418 | if (Fluxbox::instance()->getIgnoreBorder() && m_attaching_tab == 0 | 2383 | if (Fluxbox::instance()->getIgnoreBorder() && m_attaching_tab == 0 |
2419 | && !(isMoving() || isResizing())) { | 2384 | && !(isMoving() || isResizing())) { |
2420 | 2385 | ||
2421 | if (inside_border) { | 2386 | if (context & Keys::ON_WINDOWBORDER) { |
2422 | return; | 2387 | return; |
2423 | } | 2388 | } |
2424 | } | 2389 | } |
2425 | 2390 | ||
2426 | |||
2427 | int context = Keys::ON_WINDOW; | ||
2428 | if (inside_titlebar) { | ||
2429 | context = Keys::ON_TITLEBAR; | ||
2430 | } else if (inside_border) { | ||
2431 | context = Keys::ON_WINDOWBORDER; | ||
2432 | } else if (me.window == frame().gripRight()) { | ||
2433 | context = Keys::ON_RIGHTGRIP; | ||
2434 | } else if (me.window == frame().gripLeft()) { | ||
2435 | context = Keys::ON_LEFTGRIP; | ||
2436 | } | ||
2437 | |||
2438 | |||
2439 | // in case someone put MoveX :StartMoving etc into keys, we have | 2391 | // in case someone put MoveX :StartMoving etc into keys, we have |
2440 | // to activate it before doing the actual motionNotify code | 2392 | // to activate it before doing the actual motionNotify code |
2441 | Fluxbox::instance()->keys()->doAction(me.type, me.state, m_last_pressed_button, context, &winClient(), me.time); | 2393 | Fluxbox::instance()->keys()->doAction(me.type, me.state, m_last_pressed_button, context, &winClient(), me.time); |