mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
new fix (idea suggested by Clemens Pecinovsky)
This commit is contained in:
parent
494217ea89
commit
2928e1088e
@ -202,7 +202,7 @@ remove_group(MouseWatcherGroup *group) {
|
|||||||
Regions only_a, only_b, both;
|
Regions only_a, only_b, both;
|
||||||
intersect_regions(only_a, only_b, both,
|
intersect_regions(only_a, only_b, both,
|
||||||
_current_regions, group->_regions);
|
_current_regions, group->_regions);
|
||||||
_current_regions.swap(only_a);
|
set_current_regions(only_a);
|
||||||
|
|
||||||
if (has_region_in(both, _preferred_region)) {
|
if (has_region_in(both, _preferred_region)) {
|
||||||
if (_preferred_region != (MouseWatcherRegion *)NULL) {
|
if (_preferred_region != (MouseWatcherRegion *)NULL) {
|
||||||
@ -271,12 +271,16 @@ replace_group(MouseWatcherGroup *old_group, MouseWatcherGroup *new_group) {
|
|||||||
intersect_regions(remove, add, keep,
|
intersect_regions(remove, add, keep,
|
||||||
old_group->_regions, new_group->_regions);
|
old_group->_regions, new_group->_regions);
|
||||||
|
|
||||||
|
Regions new_current_regions;
|
||||||
|
bool any_new_current_regions = false;
|
||||||
|
|
||||||
// Remove the old regions
|
// Remove the old regions
|
||||||
if (!remove.empty()) {
|
if (!remove.empty()) {
|
||||||
Regions only_a, only_b, both;
|
Regions only_a, only_b, both;
|
||||||
intersect_regions(only_a, only_b, both,
|
intersect_regions(only_a, only_b, both,
|
||||||
_current_regions, remove);
|
_current_regions, remove);
|
||||||
_current_regions.swap(only_a);
|
new_current_regions.swap(only_a);
|
||||||
|
any_new_current_regions = true;
|
||||||
|
|
||||||
if (has_region_in(both, _preferred_region)) {
|
if (has_region_in(both, _preferred_region)) {
|
||||||
if (_preferred_region != (MouseWatcherRegion *)NULL) {
|
if (_preferred_region != (MouseWatcherRegion *)NULL) {
|
||||||
@ -292,9 +296,19 @@ replace_group(MouseWatcherGroup *old_group, MouseWatcherGroup *new_group) {
|
|||||||
// And add the new regions
|
// And add the new regions
|
||||||
if (!add.empty()) {
|
if (!add.empty()) {
|
||||||
Regions new_list;
|
Regions new_list;
|
||||||
|
if (any_new_current_regions) {
|
||||||
|
intersect_regions(new_list, new_list, new_list,
|
||||||
|
new_current_regions, add);
|
||||||
|
} else {
|
||||||
intersect_regions(new_list, new_list, new_list,
|
intersect_regions(new_list, new_list, new_list,
|
||||||
_current_regions, add);
|
_current_regions, add);
|
||||||
_current_regions.swap(new_list);
|
}
|
||||||
|
new_current_regions.swap(new_list);
|
||||||
|
any_new_current_regions = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (any_new_current_regions) {
|
||||||
|
set_current_regions(new_current_regions);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the new group, if it's not already there.
|
// Add the new group, if it's not already there.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user