Lines 621-628
gdk_check_wm_state_changed (GdkWindow *window)
Link Here
|
621 |
do_net_wm_state_changes (window); |
621 |
do_net_wm_state_changes (window); |
622 |
} |
622 |
} |
623 |
|
623 |
|
624 |
#define HAS_FOCUS(toplevel) \ |
624 |
#define APPEARS_FOCUSED(toplevel) \ |
625 |
((toplevel)->has_focus_window || (toplevel)->has_pointer_focus) |
625 |
((toplevel)->has_focus || (toplevel)->has_focus_window || (toplevel)->has_pointer_focus) |
626 |
|
626 |
|
627 |
static void |
627 |
static void |
628 |
generate_focus_event (GdkWindow *window, |
628 |
generate_focus_event (GdkWindow *window, |
Lines 1344-1354
gdk_event_translate (GdkDisplay *display,
Link Here
|
1344 |
|
1344 |
|
1345 |
if (xevent->xcrossing.focus && !toplevel->has_focus_window) |
1345 |
if (xevent->xcrossing.focus && !toplevel->has_focus_window) |
1346 |
{ |
1346 |
{ |
1347 |
gboolean had_focus = HAS_FOCUS (toplevel); |
1347 |
gboolean had_focus = APPEARS_FOCUSED (toplevel); |
1348 |
|
1348 |
|
1349 |
toplevel->has_pointer_focus = TRUE; |
1349 |
toplevel->has_pointer_focus = TRUE; |
1350 |
|
1350 |
|
1351 |
if (HAS_FOCUS (toplevel) != had_focus) |
1351 |
if (APPEARS_FOCUSED (toplevel) != had_focus) |
1352 |
generate_focus_event (window, TRUE); |
1352 |
generate_focus_event (window, TRUE); |
1353 |
} |
1353 |
} |
1354 |
} |
1354 |
} |
Lines 1441-1451
gdk_event_translate (GdkDisplay *display,
Link Here
|
1441 |
|
1441 |
|
1442 |
if (xevent->xcrossing.focus && !toplevel->has_focus_window) |
1442 |
if (xevent->xcrossing.focus && !toplevel->has_focus_window) |
1443 |
{ |
1443 |
{ |
1444 |
gboolean had_focus = HAS_FOCUS (toplevel); |
1444 |
gboolean had_focus = APPEARS_FOCUSED (toplevel); |
1445 |
|
1445 |
|
1446 |
toplevel->has_pointer_focus = FALSE; |
1446 |
toplevel->has_pointer_focus = FALSE; |
1447 |
|
1447 |
|
1448 |
if (HAS_FOCUS (toplevel) != had_focus) |
1448 |
if (APPEARS_FOCUSED (toplevel) != had_focus) |
1449 |
generate_focus_event (window, FALSE); |
1449 |
generate_focus_event (window, FALSE); |
1450 |
} |
1450 |
} |
1451 |
} |
1451 |
} |
Lines 1523-1529
gdk_event_translate (GdkDisplay *display,
Link Here
|
1523 |
|
1523 |
|
1524 |
if (toplevel) |
1524 |
if (toplevel) |
1525 |
{ |
1525 |
{ |
1526 |
gboolean had_focus = HAS_FOCUS (toplevel); |
1526 |
gboolean had_focus = APPEARS_FOCUSED (toplevel); |
1527 |
|
1527 |
|
1528 |
switch (xevent->xfocus.detail) |
1528 |
switch (xevent->xfocus.detail) |
1529 |
{ |
1529 |
{ |
Lines 1569-1575
gdk_event_translate (GdkDisplay *display,
Link Here
|
1569 |
break; |
1569 |
break; |
1570 |
} |
1570 |
} |
1571 |
|
1571 |
|
1572 |
if (HAS_FOCUS (toplevel) != had_focus) |
1572 |
if (APPEARS_FOCUSED (toplevel) != had_focus) |
1573 |
generate_focus_event (window, TRUE); |
1573 |
generate_focus_event (window, TRUE); |
1574 |
} |
1574 |
} |
1575 |
break; |
1575 |
break; |
Lines 1582-1588
gdk_event_translate (GdkDisplay *display,
Link Here
|
1582 |
|
1582 |
|
1583 |
if (toplevel) |
1583 |
if (toplevel) |
1584 |
{ |
1584 |
{ |
1585 |
gboolean had_focus = HAS_FOCUS (toplevel); |
1585 |
gboolean had_focus = APPEARS_FOCUSED (toplevel); |
1586 |
|
1586 |
|
1587 |
switch (xevent->xfocus.detail) |
1587 |
switch (xevent->xfocus.detail) |
1588 |
{ |
1588 |
{ |
Lines 1620-1626
gdk_event_translate (GdkDisplay *display,
Link Here
|
1620 |
break; |
1620 |
break; |
1621 |
} |
1621 |
} |
1622 |
|
1622 |
|
1623 |
if (HAS_FOCUS (toplevel) != had_focus) |
1623 |
if (APPEARS_FOCUSED (toplevel) != had_focus) |
1624 |
generate_focus_event (window, FALSE); |
1624 |
generate_focus_event (window, FALSE); |
1625 |
} |
1625 |
} |
1626 |
break; |
1626 |
break; |