diff options
Diffstat (limited to 'x11-wm/fluxbox/files/patch-aaa01')
-rw-r--r-- | x11-wm/fluxbox/files/patch-aaa01 | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/x11-wm/fluxbox/files/patch-aaa01 b/x11-wm/fluxbox/files/patch-aaa01 new file mode 100644 index 000000000000..a2e5d1bac851 --- /dev/null +++ b/x11-wm/fluxbox/files/patch-aaa01 @@ -0,0 +1,160 @@ +From: Henrik Kinnunen <fluxgen@fluxbox.org> +Date: Sun, 14 Sep 2008 18:06:28 +0000 (+0200) +Subject: some minor code cleaning. +X-Git-Tag: Release-1_1_1~4 +X-Git-Url: http://git.fluxbox.org/?p=fluxbox.git;a=commitdiff_plain;h=9f519ec0fcb7cd0dec61a4c31d246800f9a73cb3 + +some minor code cleaning. +--- + +diff --git a/src/FbWinFrame.cc b/src/FbWinFrame.cc +index 5b91218..fc35ae1 100644 +--- a/src/FbWinFrame.cc ++++ src/FbWinFrame.cc +@@ -1717,3 +1717,10 @@ void FbWinFrame::displaySize(unsigned int width, unsigned int height) const { + width, height - titlebarHeight() - handleHeight()); + m_screen.showGeometry(i, j); + } ++ ++bool FbWinFrame::insideTitlebar(Window win) const { ++ return ++ gripLeft().window() != win && ++ gripRight().window() != win && ++ window().window() != win; ++} +diff --git a/src/FbWinFrame.hh b/src/FbWinFrame.hh +index fcbe11e..ff9c19e 100644 +--- a/src/FbWinFrame.hh ++++ src/FbWinFrame.hh +@@ -236,6 +236,9 @@ public: + + const FbTk::Subject &frameExtentSig() const { return m_frame_extent_sig; } + FbTk::Subject &frameExtentSig() { return m_frame_extent_sig; } ++ /// @returns true if the window is inside titlebar, ++ /// assuming window is an event window that was generated for this frame. ++ bool insideTitlebar(Window win) const; + + //@} + +diff --git a/src/RectangleUtil.hh b/src/RectangleUtil.hh +new file mode 100644 +index 0000000..88c3a33 +--- /dev/null ++++ src/RectangleUtil.hh +@@ -0,0 +1,30 @@ ++#ifndef RECTANGLEUTIL_HH ++#define RECTANGLEUTIL_HH ++ ++namespace RectangleUtil { ++ ++ ++/* ++ * Determines if a point is inside a rectangle-like objects border. ++ * @param rect A rectangle-like object that has accessors for x, y, width, and ++ * height. ++ * @param x ++ * @param y ++ * @param border_width The size of the border. ++ * @returns true if point is inside the rectangle-like object. ++*/ ++template <typename RectangleLike> ++bool insideBorder(const RectangleLike& rect, ++ int x, int y, ++ int border_width) { ++ return ++ x >= rect.x() + border_width && ++ x < rect.x() + (int)rect.width() + border_width && ++ y >= rect.y() + border_width && ++ y < rect.y() + (int)rect.height() + border_width; ++} ++ ++} // namespace RectangleUtil ++ ++ ++#endif // RECTANGLEUTIL_HH +diff --git a/src/Window.cc b/src/Window.cc +index 16334c6..5d50fcf 100644 +--- a/src/Window.cc ++++ src/Window.cc +@@ -41,6 +41,7 @@ + #include "FocusControl.hh" + #include "IconButton.hh" + #include "ScreenPlacement.hh" ++#include "RectangleUtil.hh" + + #include "FbTk/StringUtil.hh" + #include "FbTk/Compose.hh" +@@ -2362,10 +2363,9 @@ void FluxboxWindow::buttonPressEvent(XButtonEvent &be) { + m_last_button_x = be.x_root; + m_last_button_y = be.y_root; + +- bool onTitlebar = frame().gripLeft().window() != be.window && +- frame().gripRight().window() != be.window && +- frame().handle().window() != be.window && +- frame().window() != be.window; ++ bool onTitlebar = ++ frame().insideTitlebar( be.window ) && ++ frame().handle().window() != be.window; + + if (onTitlebar && be.button == 1) + raise(); +@@ -2422,41 +2422,31 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) { + me.window = frame().window().window(); + } + +- bool inside_titlebar = frame().gripLeft().window() != me.window && +- frame().gripRight().window() != me.window && +- frame().window() != me.window; ++ bool inside_titlebar = frame().insideTitlebar( me.window ); + + if (Fluxbox::instance()->getIgnoreBorder() && m_attaching_tab == 0 + && !(isMoving() || isResizing())) { ++ ++ using RectangleUtil::insideBorder; ++ + int borderw = frame().window().borderWidth(); + //!! TODO(tabs): the below test ought to be in FbWinFrame + // if mouse is currently on the window border, ignore it +- if ((me.x_root < (frame().x() + borderw) || +- me.y_root < (frame().y() + borderw) || +- me.x_root >= (frame().x() + (int)frame().width() + borderw) || +- me.y_root >= (frame().y() + (int)frame().height() + borderw)) +- && (!frame().externalTabMode() || +- (me.x_root < (frame().tabcontainer().x() + borderw) || +- me.y_root < (frame().tabcontainer().y() + borderw) || +- me.x_root >= (frame().tabcontainer().x() + +- (int)frame().tabcontainer().width() + borderw) || +- me.y_root >= (frame().tabcontainer().y() + +- (int)frame().tabcontainer().height() + borderw))) +- // or if mouse was on border when it was last clicked +- || (m_last_button_x < (frame().x() + borderw) || +- m_last_button_y < (frame().y() + borderw) || +- m_last_button_x >= (frame().x() + +- (int)frame().width() + borderw) || +- m_last_button_y >= (frame().y() + +- (int)frame().height() + borderw)) +- && (!frame().externalTabMode() || +- (m_last_button_x < (frame().tabcontainer().x() + borderw) || +- m_last_button_y < (frame().tabcontainer().y() + borderw) || +- m_last_button_x >= (frame().tabcontainer().x() + +- (int)frame().tabcontainer().width() + borderw) || +- m_last_button_y >= (frame().tabcontainer().y() + +- (int)frame().tabcontainer().height() + borderw)))) ++ if ( ! insideBorder(frame(), ++ me.x_root, me.y_root, borderw) && ++ ( !frame().externalTabMode() || ++ ! insideBorder(frame().tabcontainer(), ++ me.x_root, me.y_root, borderw) ) ++ ++ || // or if mouse was on border when it was last clicked ++ ++ ! insideBorder(frame(), ++ m_last_button_x, m_last_button_y, borderw) && ++ ( ! frame().externalTabMode() || ++ ! insideBorder(frame().tabcontainer(), ++ m_last_button_x, m_last_button_y, borderw ) ) ) { + return; ++ } + } + + if (moving || ((me.state & Button1Mask) && functions.move && |