@@ -868,24 +868,26 @@ void CompareAndApplyEvents1(const std::string& page_id, VNode* old_node,
868
868
VNode* new_node) {
869
869
std::map<std::string, void *> old_events = *old_node->events ();
870
870
std::map<std::string, void *> new_events = *new_node->events ();
871
+ std::map<std::string, void *> remove_events;
872
+ std::map<std::string, void *> add_events;
871
873
872
874
for (auto it = old_events.cbegin (); it != old_events.cend (); it++) {
873
875
auto pos = new_events.find (it->first );
874
- if (pos ! = new_events.end ()) {
875
- new_events. erase (pos );
876
+ if (pos = = new_events.end ()) {
877
+ remove_events. insert (*it );
876
878
}
877
879
}
878
880
for (auto it = new_events.cbegin (); it != new_events.cend (); it++) {
879
881
auto pos = old_events.find (it->first );
880
- if (pos ! = old_events.end ()) {
881
- old_events. erase (pos );
882
+ if (pos = = old_events.end ()) {
883
+ add_events. insert (*it );
882
884
}
883
885
}
884
- for (auto it = old_events .cbegin (); it != old_events .cend (); it++) {
886
+ for (auto it = remove_events .cbegin (); it != remove_events .cend (); it++) {
885
887
RenderManager::GetInstance ()->RemoveEvent (
886
888
page_id, new_node->render_object_ref (), it->first );
887
889
}
888
- for (auto it = new_events .cbegin (); it != new_events .cend (); it++) {
890
+ for (auto it = add_events .cbegin (); it != add_events .cend (); it++) {
889
891
RenderManager::GetInstance ()->AddEvent (
890
892
page_id, new_node->render_object_ref (), it->first );
891
893
}
@@ -896,25 +898,27 @@ void CompareAndApplyEvents2(const std::string& page_id, VNode* old_node,
896
898
VNode::EventParamsMap old_events = *old_node->event_params_map ();
897
899
VNode::EventParamsMap new_events = *new_node->event_params_map ();
898
900
901
+ VNode::EventParamsMap remove_events;
902
+ VNode::EventParamsMap add_events;
899
903
for (auto it = old_events.cbegin (); it != old_events.cend (); it++) {
900
904
auto pos = new_events.find (it->first );
901
905
902
- if (pos ! = new_events.end ()) {
903
- new_events. erase (pos );
906
+ if (pos = = new_events.end ()) {
907
+ remove_events. insert (*it );
904
908
}
905
909
}
906
910
for (auto it = new_events.cbegin (); it != new_events.cend (); it++) {
907
911
auto pos = old_events.find (it->first );
908
912
909
- if (pos ! = old_events.end ()) {
910
- old_events. erase (pos );
913
+ if (pos = = old_events.end ()) {
914
+ add_events. insert (*it );
911
915
}
912
916
}
913
- for (auto it = old_events .cbegin (); it != old_events .cend (); it++) {
917
+ for (auto it = remove_events .cbegin (); it != remove_events .cend (); it++) {
914
918
RenderManager::GetInstance ()->RemoveEvent (
915
919
page_id, new_node->render_object_ref (), it->first );
916
920
}
917
- for (auto it = new_events .cbegin (); it != new_events .cend (); it++) {
921
+ for (auto it = add_events .cbegin (); it != add_events .cend (); it++) {
918
922
RenderManager::GetInstance ()->AddEvent (
919
923
page_id, new_node->render_object_ref (), it->first );
920
924
}
0 commit comments