X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fwm_layer_control.cpp;h=3e3d0d511af6872a2f93545906bfc2ff4883769a;hb=f7536d2b6ff552e7c4849b36d9b6e140c5b1b9aa;hp=887fc5844124f2517821aa4abe90b903da52ed99;hpb=ac17da7010c6bd90240a641d503991ca5d0cb41a;p=apps%2Fagl-service-windowmanager.git diff --git a/src/wm_layer_control.cpp b/src/wm_layer_control.cpp index 887fc58..3e3d0d5 100644 --- a/src/wm_layer_control.cpp +++ b/src/wm_layer_control.cpp @@ -861,18 +861,7 @@ bool LayerControl::moveForeGround(const shared_ptr client) bool LayerControl::moveRemote(unsigned layer, const std::string& area) { bool ret = false; - std::string remote_layer; - std::string ecu_name = area; - - if (area.find('.') != std::string::npos) - { - std::vector elements; - elements = parseString(area, '.'); - ecu_name = elements[0]; - } - - remote_layer = this->areaToRemoteLayer(ecu_name); - + std::string remote_layer = this->areaToRemoteLayer(area); auto remote = this->getWMLayer(remote_layer); if(remote != nullptr) @@ -944,13 +933,46 @@ std::string LayerControl::hasRemoteLayer(unsigned layer) return ""; } -std::string LayerControl::areaToRemoteLayer(std::string area) +std::string LayerControl::areaToRemoteLayer(const std::string& area) { + std::vector elements; + + if (area.find('.') != std::string::npos) + { + elements = parseString(area, '.'); + } + else + { + elements.push_back(area); + } + for (auto itr = wm_remoteLayerName.begin(); itr != wm_remoteLayerName.end(); ++itr) { - if (std::regex_search(*itr, std::regex(area, std::regex::icase))) + unsigned int idx = 0; + for (auto itr_elem = elements.begin(); itr_elem != elements.end(); ++itr_elem) { - return *itr; + if (std::regex_search(*itr, std::regex(*itr_elem, std::regex::icase))) + { + if (++idx == elements.size()) + { + return *itr; + } + } + else + { + // TODO: workaround, skip normal case + if ((itr_elem->compare("normal") == 0) || (itr_elem->compare("full") == 0)) + { + if (++idx == elements.size()) + { + return *itr; + } + } + else + { + break; + } + } } }