8
8
static xcb_connection_t * dpy ;
9
9
static xcb_screen_t * scre ;
10
10
static xcb_drawable_t win ;
11
+ static xcb_drawable_t winprev ;
11
12
static xcb_drawable_t root ;
12
13
static uint32_t values [3 ];
13
14
@@ -102,6 +103,10 @@ static void setFocus(xcb_drawable_t window) {
102
103
xcb_set_input_focus (dpy , XCB_INPUT_FOCUS_POINTER_ROOT , window ,
103
104
XCB_CURRENT_TIME );
104
105
}
106
+ setBorderColor (window , 1 );
107
+ if (winprev != window ) {
108
+ setBorderColor (winprev , 0 );
109
+ }
105
110
}
106
111
107
112
static void setBorderColor (xcb_window_t window , int focus ) {
@@ -148,12 +153,11 @@ static void handleKeyPress(xcb_generic_event_t * ev) {
148
153
static void handleEnterNotify (xcb_generic_event_t * ev ) {
149
154
xcb_enter_notify_event_t * e = ( xcb_enter_notify_event_t * ) ev ;
150
155
setFocus (e -> event );
151
- setBorderColor (e -> event , 1 );
152
156
}
153
157
154
158
static void handleLeaveNotify (xcb_generic_event_t * ev ) {
155
159
xcb_leave_notify_event_t * e = ( xcb_leave_notify_event_t * ) ev ;
156
- setBorderColor ( e -> event , 0 ) ;
160
+ winprev = e -> event ;
157
161
}
158
162
159
163
static void handleButtonRelease (xcb_generic_event_t * ev ) {
@@ -174,7 +178,6 @@ static void handleMapRequest(xcb_generic_event_t * ev) {
174
178
xcb_map_window (dpy , e -> window );
175
179
setWindowDimensions (e -> window );
176
180
setBorderWidth (e -> window );
177
- setBorderColor (e -> window , 0 );
178
181
values [0 ] = XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW ;
179
182
xcb_change_window_attributes_checked (dpy , e -> window ,
180
183
XCB_CW_EVENT_MASK , values );
@@ -251,7 +254,7 @@ static int strcmp_c(char * str1, char * str2) {
251
254
int main (int argc , char * argv []) {
252
255
int ret = 0 ;
253
256
if ((argc == 2 ) && (strcmp_c ("-v" , argv [1 ]) == 0 )) {
254
- ret = die ("xwm-0.0.6 , © 2020 Michael Czigler, see LICENSE for details\n" );
257
+ ret = die ("xwm-0.0.7 , © 2020 Michael Czigler, see LICENSE for details\n" );
255
258
}
256
259
if ((ret == 0 ) && (argc != 1 )) {
257
260
ret = die ("usage: xwm [-v]\n" );
0 commit comments