Lines 1-160
Link Here
|
1 |
From: Henrik Kinnunen <fluxgen@fluxbox.org> |
|
|
2 |
Date: Sun, 14 Sep 2008 18:06:28 +0000 (+0200) |
3 |
Subject: some minor code cleaning. |
4 |
X-Git-Tag: Release-1_1_1~4 |
5 |
X-Git-Url: http://git.fluxbox.org/?p=fluxbox.git;a=commitdiff_plain;h=9f519ec0fcb7cd0dec61a4c31d246800f9a73cb3 |
6 |
|
7 |
some minor code cleaning. |
8 |
--- |
9 |
|
10 |
diff --git a/src/FbWinFrame.cc b/src/FbWinFrame.cc |
11 |
index 5b91218..fc35ae1 100644 |
12 |
--- a/src/FbWinFrame.cc |
13 |
+++ src/FbWinFrame.cc |
14 |
@@ -1717,3 +1717,10 @@ void FbWinFrame::displaySize(unsigned int width, unsigned int height) const { |
15 |
width, height - titlebarHeight() - handleHeight()); |
16 |
m_screen.showGeometry(i, j); |
17 |
} |
18 |
+ |
19 |
+bool FbWinFrame::insideTitlebar(Window win) const { |
20 |
+ return |
21 |
+ gripLeft().window() != win && |
22 |
+ gripRight().window() != win && |
23 |
+ window().window() != win; |
24 |
+} |
25 |
diff --git a/src/FbWinFrame.hh b/src/FbWinFrame.hh |
26 |
index fcbe11e..ff9c19e 100644 |
27 |
--- a/src/FbWinFrame.hh |
28 |
+++ src/FbWinFrame.hh |
29 |
@@ -236,6 +236,9 @@ public: |
30 |
|
31 |
const FbTk::Subject &frameExtentSig() const { return m_frame_extent_sig; } |
32 |
FbTk::Subject &frameExtentSig() { return m_frame_extent_sig; } |
33 |
+ /// @returns true if the window is inside titlebar, |
34 |
+ /// assuming window is an event window that was generated for this frame. |
35 |
+ bool insideTitlebar(Window win) const; |
36 |
|
37 |
//@} |
38 |
|
39 |
diff --git a/src/RectangleUtil.hh b/src/RectangleUtil.hh |
40 |
new file mode 100644 |
41 |
index 0000000..88c3a33 |
42 |
--- /dev/null |
43 |
+++ src/RectangleUtil.hh |
44 |
@@ -0,0 +1,30 @@ |
45 |
+#ifndef RECTANGLEUTIL_HH |
46 |
+#define RECTANGLEUTIL_HH |
47 |
+ |
48 |
+namespace RectangleUtil { |
49 |
+ |
50 |
+ |
51 |
+/* |
52 |
+ * Determines if a point is inside a rectangle-like objects border. |
53 |
+ * @param rect A rectangle-like object that has accessors for x, y, width, and |
54 |
+ * height. |
55 |
+ * @param x |
56 |
+ * @param y |
57 |
+ * @param border_width The size of the border. |
58 |
+ * @returns true if point is inside the rectangle-like object. |
59 |
+*/ |
60 |
+template <typename RectangleLike> |
61 |
+bool insideBorder(const RectangleLike& rect, |
62 |
+ int x, int y, |
63 |
+ int border_width) { |
64 |
+ return |
65 |
+ x >= rect.x() + border_width && |
66 |
+ x < rect.x() + (int)rect.width() + border_width && |
67 |
+ y >= rect.y() + border_width && |
68 |
+ y < rect.y() + (int)rect.height() + border_width; |
69 |
+} |
70 |
+ |
71 |
+} // namespace RectangleUtil |
72 |
+ |
73 |
+ |
74 |
+#endif // RECTANGLEUTIL_HH |
75 |
diff --git a/src/Window.cc b/src/Window.cc |
76 |
index 16334c6..5d50fcf 100644 |
77 |
--- a/src/Window.cc |
78 |
+++ src/Window.cc |
79 |
@@ -41,6 +41,7 @@ |
80 |
#include "FocusControl.hh" |
81 |
#include "IconButton.hh" |
82 |
#include "ScreenPlacement.hh" |
83 |
+#include "RectangleUtil.hh" |
84 |
|
85 |
#include "FbTk/StringUtil.hh" |
86 |
#include "FbTk/Compose.hh" |
87 |
@@ -2362,10 +2363,9 @@ void FluxboxWindow::buttonPressEvent(XButtonEvent &be) { |
88 |
m_last_button_x = be.x_root; |
89 |
m_last_button_y = be.y_root; |
90 |
|
91 |
- bool onTitlebar = frame().gripLeft().window() != be.window && |
92 |
- frame().gripRight().window() != be.window && |
93 |
- frame().handle().window() != be.window && |
94 |
- frame().window() != be.window; |
95 |
+ bool onTitlebar = |
96 |
+ frame().insideTitlebar( be.window ) && |
97 |
+ frame().handle().window() != be.window; |
98 |
|
99 |
if (onTitlebar && be.button == 1) |
100 |
raise(); |
101 |
@@ -2422,41 +2422,31 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) { |
102 |
me.window = frame().window().window(); |
103 |
} |
104 |
|
105 |
- bool inside_titlebar = frame().gripLeft().window() != me.window && |
106 |
- frame().gripRight().window() != me.window && |
107 |
- frame().window() != me.window; |
108 |
+ bool inside_titlebar = frame().insideTitlebar( me.window ); |
109 |
|
110 |
if (Fluxbox::instance()->getIgnoreBorder() && m_attaching_tab == 0 |
111 |
&& !(isMoving() || isResizing())) { |
112 |
+ |
113 |
+ using RectangleUtil::insideBorder; |
114 |
+ |
115 |
int borderw = frame().window().borderWidth(); |
116 |
//!! TODO(tabs): the below test ought to be in FbWinFrame |
117 |
// if mouse is currently on the window border, ignore it |
118 |
- if ((me.x_root < (frame().x() + borderw) || |
119 |
- me.y_root < (frame().y() + borderw) || |
120 |
- me.x_root >= (frame().x() + (int)frame().width() + borderw) || |
121 |
- me.y_root >= (frame().y() + (int)frame().height() + borderw)) |
122 |
- && (!frame().externalTabMode() || |
123 |
- (me.x_root < (frame().tabcontainer().x() + borderw) || |
124 |
- me.y_root < (frame().tabcontainer().y() + borderw) || |
125 |
- me.x_root >= (frame().tabcontainer().x() + |
126 |
- (int)frame().tabcontainer().width() + borderw) || |
127 |
- me.y_root >= (frame().tabcontainer().y() + |
128 |
- (int)frame().tabcontainer().height() + borderw))) |
129 |
- // or if mouse was on border when it was last clicked |
130 |
- || (m_last_button_x < (frame().x() + borderw) || |
131 |
- m_last_button_y < (frame().y() + borderw) || |
132 |
- m_last_button_x >= (frame().x() + |
133 |
- (int)frame().width() + borderw) || |
134 |
- m_last_button_y >= (frame().y() + |
135 |
- (int)frame().height() + borderw)) |
136 |
- && (!frame().externalTabMode() || |
137 |
- (m_last_button_x < (frame().tabcontainer().x() + borderw) || |
138 |
- m_last_button_y < (frame().tabcontainer().y() + borderw) || |
139 |
- m_last_button_x >= (frame().tabcontainer().x() + |
140 |
- (int)frame().tabcontainer().width() + borderw) || |
141 |
- m_last_button_y >= (frame().tabcontainer().y() + |
142 |
- (int)frame().tabcontainer().height() + borderw)))) |
143 |
+ if ( ! insideBorder(frame(), |
144 |
+ me.x_root, me.y_root, borderw) && |
145 |
+ ( !frame().externalTabMode() || |
146 |
+ ! insideBorder(frame().tabcontainer(), |
147 |
+ me.x_root, me.y_root, borderw) ) |
148 |
+ |
149 |
+ || // or if mouse was on border when it was last clicked |
150 |
+ |
151 |
+ ! insideBorder(frame(), |
152 |
+ m_last_button_x, m_last_button_y, borderw) && |
153 |
+ ( ! frame().externalTabMode() || |
154 |
+ ! insideBorder(frame().tabcontainer(), |
155 |
+ m_last_button_x, m_last_button_y, borderw ) ) ) { |
156 |
return; |
157 |
+ } |
158 |
} |
159 |
|
160 |
if (moving || ((me.state & Button1Mask) && functions.move && |