diff --git a/OsmAnd-java/src/net/osmand/router/RouteResultPreparation.java b/OsmAnd-java/src/net/osmand/router/RouteResultPreparation.java
index 99e26ca3e2..00738df442 100644
--- a/OsmAnd-java/src/net/osmand/router/RouteResultPreparation.java
+++ b/OsmAnd-java/src/net/osmand/router/RouteResultPreparation.java
@@ -1429,16 +1429,16 @@ public class RouteResultPreparation {
}
}
}
- // remove all non-slight turns
- if(possibleTurns.size() > 1) {
- TIntIterator it = possibleTurns.iterator();
- while(it.hasNext()) {
- int nxt = it.next();
- if(!TurnType.isSlightTurn(nxt)) {
- it.remove();
- }
- }
- }
+ // remove all non-slight turns // TEST don't pass
+// if(possibleTurns.size() > 1) {
+// TIntIterator it = possibleTurns.iterator();
+// while(it.hasNext()) {
+// int nxt = it.next();
+// if(!TurnType.isSlightTurn(nxt)) {
+// it.remove();
+// }
+// }
+// }
int infer = 0;
if (possibleTurns.size() == 1) {
infer = possibleTurns.iterator().next();
diff --git a/OsmAnd/res/layout/map_context_menu_fragment.xml b/OsmAnd/res/layout/map_context_menu_fragment.xml
index e51c489a04..1924bf56a3 100644
--- a/OsmAnd/res/layout/map_context_menu_fragment.xml
+++ b/OsmAnd/res/layout/map_context_menu_fragment.xml
@@ -436,6 +436,35 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
+
+
+
+
+
+
+
Donkergeel
diff --git a/OsmAnd/src/net/osmand/plus/AppInitializer.java b/OsmAnd/src/net/osmand/plus/AppInitializer.java
index 0dc3cc726a..53fb922d9f 100644
--- a/OsmAnd/src/net/osmand/plus/AppInitializer.java
+++ b/OsmAnd/src/net/osmand/plus/AppInitializer.java
@@ -87,7 +87,7 @@ public class AppInitializer implements IProgress {
private static final String VERSION_INSTALLED = "VERSION_INSTALLED"; //$NON-NLS-1$
private static final String EXCEPTION_FILE_SIZE = "EXCEPTION_FS"; //$NON-NLS-1$
- public static final String LATEST_CHANGES_URL = "https://osmand.net/blog?id=osmand-2-7-released";
+ public static final String LATEST_CHANGES_URL = "https://osmand.net/blog?id=osmand-2-8-released";
// public static final String LATEST_CHANGES_URL = null; // not enough to read
public static final int APP_EXIT_CODE = 4;
public static final String APP_EXIT_KEY = "APP_EXIT_KEY";
diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
index 4e4f9dc846..4aa1980093 100644
--- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
+++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
@@ -913,6 +913,8 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
}
public void readLocationToShow() {
+ mapLayers.getMapControlsLayer().showMapControls();
+
LatLon cur = new LatLon(mapView.getLatitude(), mapView.getLongitude());
LatLon latLonToShow = settings.getAndClearMapLocationToShow();
PointDescription mapLabelToShow = settings.getAndClearMapLabelToShow(latLonToShow);
diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java
index 3aec39ede8..8438311687 100644
--- a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java
+++ b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java
@@ -851,7 +851,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis
}
}
mapActivity.findViewById(R.id.toolbar_back).setVisibility(isBackButtonVisible() ? View.VISIBLE : View.GONE);
- mapActivity.findViewById(R.id.MapHudButtonsOverlay).setVisibility(View.INVISIBLE);
+ mapActivity.getMapLayers().getMapControlsLayer().hideMapControls();
boolean portrait = AndroidUiHelper.isOrientationPortrait(mapActivity);
if (!portrait) {
AndroidUiHelper.updateVisibility(mapActivity.findViewById(R.id.map_route_land_left_margin_external), true);
@@ -875,7 +875,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis
mapActivity.getMapView().refreshMap();
}
- mapActivity.findViewById(R.id.MapHudButtonsOverlay).setVisibility(View.VISIBLE);
+ mapActivity.getMapLayers().getMapControlsLayer().showMapControls();
hideActionButton();
for (WeakReference df : fragList) {
if (df.get() != null) {
diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java
index 843e268078..916fb34fb6 100644
--- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java
+++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java
@@ -368,7 +368,6 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
fragmentRef.get().centerMarkerLocation();
}
}
- updateControlsVisibility();
}
public void show(@NonNull LatLon latLon,
@@ -377,7 +376,6 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
if (init(latLon, pointDescription, object)) {
showInternal();
}
- updateControlsVisibility();
}
private void showInternal() {
@@ -415,7 +413,8 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
init(latLon, pointDescription, object);
}
- public void close() {
+ public boolean close() {
+ boolean result = false;
if (active) {
active = false;
if (object instanceof MapMarker) {
@@ -430,15 +429,17 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
if (this.object != null) {
clearSelectedObject(this.object);
}
- hide();
+ result = hide();
if (menuController != null) {
menuController.setActive(false);
}
mapActivity.refreshMap();
}
+ return result;
}
- public void hide() {
+ public boolean hide() {
+ boolean result = false;
if (mapPosition != 0) {
mapActivity.getMapView().setMapPosition(mapPosition);
mapPosition = 0;
@@ -449,20 +450,33 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
WeakReference fragmentRef = findMenuFragment();
if (fragmentRef != null) {
fragmentRef.get().dismissMenu();
+ result = true;
}
- updateControlsVisibility();
+ return result;
}
- public void updateControlsVisibility() {
- int visibility = shouldShowControls() ? View.VISIBLE : View.GONE;
- mapActivity.findViewById(R.id.map_center_info).setVisibility(visibility);
- mapActivity.findViewById(R.id.map_left_widgets_panel).setVisibility(visibility);
- mapActivity.findViewById(R.id.map_right_widgets_panel).setVisibility(visibility);
+ public void updateControlsVisibility(boolean menuVisible) {
+ int topControlsVisibility = shouldShowTopControls(menuVisible) ? View.VISIBLE : View.GONE;
+ mapActivity.findViewById(R.id.map_center_info).setVisibility(topControlsVisibility);
+ mapActivity.findViewById(R.id.map_left_widgets_panel).setVisibility(topControlsVisibility);
+ mapActivity.findViewById(R.id.map_right_widgets_panel).setVisibility(topControlsVisibility);
+
+ int bottomControlsVisibility = shouldShowBottomControls(menuVisible) ? View.VISIBLE : View.GONE;
+ mapActivity.findViewById(R.id.bottom_controls_container).setVisibility(bottomControlsVisibility);
+
mapActivity.refreshMap();
}
- public boolean shouldShowControls() {
- return !isVisible() || isLandscapeLayout() || getCurrentMenuState() == MenuController.MenuState.HEADER_ONLY;
+ public boolean shouldShowTopControls() {
+ return shouldShowTopControls(isVisible());
+ }
+
+ public boolean shouldShowTopControls(boolean menuVisible) {
+ return !menuVisible || isLandscapeLayout() || getCurrentMenuState() == MenuController.MenuState.HEADER_ONLY;
+ }
+
+ public boolean shouldShowBottomControls(boolean menuVisible) {
+ return !menuVisible || isLandscapeLayout();
}
// timeout in msec
@@ -633,18 +647,20 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
}
}
- public void onSingleTapOnMap() {
+ public boolean onSingleTapOnMap() {
+ boolean result = false;
if (menuController == null || !menuController.handleSingleTapOnMap()) {
if (menuController != null && !menuController.isClosable()) {
- hide();
+ result = hide();
} else {
updateMapCenter(null);
- close();
+ result = close();
}
if (mapActivity.getMapLayers().getMapQuickActionLayer().isLayerOn()) {
mapActivity.getMapLayers().getMapQuickActionLayer().refreshLayer();
}
}
+ return result;
}
@Override
@@ -710,6 +726,24 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
mapActivity.getMapLayers().getMapControlsLayer().navigateFab();
}
+ public boolean zoomInPressed() {
+ WeakReference fragmentRef = findMenuFragment();
+ if (fragmentRef != null) {
+ fragmentRef.get().doZoomIn();
+ return true;
+ }
+ return false;
+ }
+
+ public boolean zoomOutPressed() {
+ WeakReference fragmentRef = findMenuFragment();
+ if (fragmentRef != null) {
+ fragmentRef.get().doZoomOut();
+ return true;
+ }
+ return false;
+ }
+
public void buttonWaypointPressed() {
if (pointDescription.isDestination()) {
mapActivity.getMapActions().editWaypoints();
@@ -1033,6 +1067,10 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL
return menuController == null || menuController.fabVisible();
}
+ public boolean zoomButtonsVisible() {
+ return menuController == null || menuController.zoomButtonsVisible();
+ }
+
public boolean isClosable() {
return menuController == null || menuController.isClosable();
}
diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java
index 3f83428f8c..b181e47f40 100644
--- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java
+++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java
@@ -66,7 +66,10 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
private View view;
private View mainView;
- ImageView fabView;
+ private ImageView fabView;
+ private View zoomButtonsView;
+ private ImageButton zoomInButtonView;
+ private ImageButton zoomOutButtonView;
private MapContextMenu menu;
private OnLayoutChangeListener containerLayoutListener;
@@ -83,6 +86,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
private int screenHeight;
private int viewHeight;
+ private int zoomButtonsHeight;
private int fabPaddingTopPx;
private int markerPaddingPx;
@@ -257,7 +261,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
if (singleTapDetector.onTouchEvent(event)) {
moving = false;
if (hasMoved) {
- applyPosY(getViewY(), false, false, 0, 0);
+ applyPosY(getViewY(), false, false, 0, 0, 0);
}
openMenuHalfScreen();
return true;
@@ -386,6 +390,32 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
fabView.setVisibility(View.GONE);
}
+ // Zoom buttons
+ zoomButtonsView = view.findViewById(R.id.context_menu_zoom_buttons);
+ zoomInButtonView = (ImageButton) view.findViewById(R.id.context_menu_zoom_in_button);
+ zoomOutButtonView = (ImageButton) view.findViewById(R.id.context_menu_zoom_out_button);
+ if (menu.zoomButtonsVisible()) {
+ updateImageButton(zoomInButtonView, R.drawable.map_zoom_in, R.drawable.map_zoom_in_night,
+ R.drawable.btn_circle_trans, R.drawable.btn_circle_night, nightMode);
+ updateImageButton(zoomOutButtonView, R.drawable.map_zoom_out, R.drawable.map_zoom_out_night,
+ R.drawable.btn_circle_trans, R.drawable.btn_circle_night, nightMode);
+ zoomInButtonView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ menu.zoomInPressed();
+ }
+ });
+ zoomOutButtonView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ menu.zoomOutPressed();
+ }
+ });
+ zoomButtonsView.setVisibility(View.VISIBLE);
+ } else {
+ zoomButtonsView.setVisibility(View.GONE);
+ }
+
View buttonsTopBorder = view.findViewById(R.id.buttons_top_border);
AndroidUtils.setBackground(getMapActivity(), buttonsTopBorder, nightMode,
R.color.dashboard_divider_light, R.color.dashboard_divider_dark);
@@ -481,6 +511,16 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
return view;
}
+ private void updateImageButton(ImageButton button, int iconLightId, int iconDarkId, int bgLightId, int bgDarkId, boolean night) {
+ button.setImageDrawable(getMapActivity().getMyApplication().getIconsCache().getIcon(night ? iconDarkId : iconLightId));
+ if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
+ button.setBackground(getMapActivity().getResources().getDrawable(night ? bgDarkId : bgLightId,
+ getMapActivity().getTheme()));
+ } else {
+ button.setBackgroundDrawable(getMapActivity().getResources().getDrawable(night ? bgDarkId : bgLightId));
+ }
+ }
+
private void processScreenHeight(ViewParent parent) {
View container = (View)parent;
if (Build.VERSION.SDK_INT >= 11) {
@@ -525,17 +565,33 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
boolean needMapAdjust = oldMenuState != newMenuState && newMenuState != MenuState.FULL_SCREEN;
if (newMenuState != oldMenuState) {
- menu.updateControlsVisibility();
+ menu.updateControlsVisibility(true);
doBeforeMenuStateChange(oldMenuState, newMenuState);
}
- applyPosY(currentY, needCloseMenu, needMapAdjust, oldMenuState, newMenuState);
+ applyPosY(currentY, needCloseMenu, needMapAdjust, oldMenuState, newMenuState, 0);
+ }
+
+ public void doZoomIn() {
+ if (!centered) {
+ centered = true;
+ calculateCenterLatLon(menu.getLatLon(), getZoom() + 1, true);
+ }
+ applyPosY(getViewY(), false, true, 0, 0, 1);
+ }
+
+ public void doZoomOut() {
+ if (!centered) {
+ centered = true;
+ calculateCenterLatLon(menu.getLatLon(), getZoom() - 1, true);
+ }
+ applyPosY(getViewY(), false, true, 0, 0, -1);
}
private void applyPosY(final int currentY, final boolean needCloseMenu, boolean needMapAdjust,
- final int previousMenuState, final int newMenuState) {
+ final int previousMenuState, final int newMenuState, int dZoom) {
final int posY = getPosY(needCloseMenu);
- if (currentY != posY) {
+ if (currentY != posY || dZoom != 0) {
if (posY < currentY) {
updateMainViewLayout(posY);
}
@@ -574,8 +630,13 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
.setInterpolator(new DecelerateInterpolator())
.start();
+ zoomButtonsView.animate().y(getZoomButtonsY(posY))
+ .setDuration(200)
+ .setInterpolator(new DecelerateInterpolator())
+ .start();
+
if (needMapAdjust) {
- adjustMapPosition(posY, true, centered);
+ adjustMapPosition(posY, true, centered, dZoom);
}
} else {
setViewY(posY, false, needMapAdjust);
@@ -791,7 +852,8 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
if (parent != null && containerLayoutListener != null) {
((View) parent).addOnLayoutChangeListener(containerLayoutListener);
}
-
+ menu.updateControlsVisibility(true);
+ getMapActivity().getMapLayers().getMapControlsLayer().showMapControls();
}
@Override
@@ -805,6 +867,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
if (!wasDrawerDisabled) {
getMapActivity().enableDrawer();
}
+ menu.updateControlsVisibility(false);
super.onPause();
}
@@ -874,6 +937,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
menuTopShadowHeight = view.findViewById(R.id.context_menu_top_shadow).getHeight();
int newMenuTopShadowAllHeight = view.findViewById(R.id.context_menu_top_shadow_all).getHeight();
menuFullHeight = view.findViewById(R.id.context_menu_main).getHeight();
+ zoomButtonsHeight = zoomButtonsView.getHeight();
int dy = 0;
if (!menu.isLandscapeLayout()) {
@@ -960,7 +1024,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
public void centerMarkerLocation() {
centered = true;
- showOnMap(menu.getLatLon(), true, true, false);
+ showOnMap(menu.getLatLon(), true, true, false, getZoom());
}
private int getZoom() {
@@ -994,21 +1058,20 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
return new LatLon(flat, flon);
}
- private void showOnMap(LatLon latLon, boolean updateCoords, boolean needMove, boolean alreadyAdjusted) {
+ private void showOnMap(LatLon latLon, boolean updateCoords, boolean needMove, boolean alreadyAdjusted, int zoom) {
AnimateDraggingMapThread thread = map.getAnimatedDraggingThread();
- int fZoom = getZoom();
- LatLon calcLatLon = calculateCenterLatLon(latLon, fZoom, updateCoords);
+ LatLon calcLatLon = calculateCenterLatLon(latLon, zoom, updateCoords);
if (updateCoords) {
mapCenter = calcLatLon;
menu.setMapCenter(mapCenter);
}
if (!alreadyAdjusted) {
- calcLatLon = getAdjustedMarkerLocation(getPosY(), calcLatLon, true, fZoom);
+ calcLatLon = getAdjustedMarkerLocation(getPosY(), calcLatLon, true, zoom);
}
if (needMove) {
- thread.startMoving(calcLatLon.getLatitude(), calcLatLon.getLongitude(), fZoom, true);
+ thread.startMoving(calcLatLon.getLatitude(), calcLatLon.getLongitude(), zoom, true);
}
}
@@ -1137,30 +1200,36 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
if (!oldAndroid()) {
mainView.setY(y);
fabView.setY(getFabY(y));
+ zoomButtonsView.setY(getZoomButtonsY(y));
} else {
mainView.setPadding(0, y, 0, 0);
fabView.setPadding(0, getFabY(y), 0, 0);
+ zoomButtonsView.setPadding(0, getZoomButtonsY(y), 0, 0);
}
if (!customMapCenter) {
if (adjustMapPos) {
- adjustMapPosition(y, animated, centered);
+ adjustMapPosition(y, animated, centered, 0);
}
} else {
customMapCenter = false;
}
}
- private void adjustMapPosition(int y, boolean animated, boolean center) {
+ private void adjustMapPosition(int y, boolean animated, boolean center, int dZoom) {
map.getAnimatedDraggingThread().stopAnimatingSync();
- LatLon latlon = getAdjustedMarkerLocation(y, menu.getLatLon(), center, getZoom());
+ int zoom = getZoom() + dZoom;
+ LatLon latlon = getAdjustedMarkerLocation(y, menu.getLatLon(), center, zoom);
- if (map.getLatitude() == latlon.getLatitude() && map.getLongitude() == latlon.getLongitude()) {
+ if (map.getLatitude() == latlon.getLatitude() && map.getLongitude() == latlon.getLongitude() && dZoom == 0) {
return;
}
if (animated) {
- showOnMap(latlon, false, true, true);
+ showOnMap(latlon, false, true, true, zoom);
} else {
+ if (dZoom != 0) {
+ map.setIntZoom(zoom);
+ }
map.setLatLon(latlon.getLatitude(), latlon.getLongitude());
}
}
@@ -1236,6 +1305,10 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
return fabY;
}
+ private int getZoomButtonsY(int y) {
+ return y - zoomButtonsHeight - fabPaddingTopPx;
+ }
+
private boolean oldAndroid() {
return (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH);
}
@@ -1268,7 +1341,7 @@ public class MapContextMenuFragment extends Fragment implements DownloadEvents {
if (mapCenter != null) {
map.setLatLon(mapCenter.getLatitude(), mapCenter.getLongitude());
}
- adjustMapPosition(getPosY(), true, false);
+ adjustMapPosition(getPosY(), true, false, 0);
} else {
view.setVisibility(View.GONE);
}
diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java
index d7e9d64af4..e6e0d4faa2 100644
--- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java
+++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java
@@ -353,6 +353,10 @@ public abstract class MenuController extends BaseMenuController {
return true;
}
+ public boolean zoomButtonsVisible() {
+ return !isLandscapeLayout();
+ }
+
public boolean buttonsVisible() {
return true;
}
diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoMenuFragment.java
index 6ebf0ee420..1ceedaa33c 100644
--- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoMenuFragment.java
+++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoMenuFragment.java
@@ -55,6 +55,7 @@ public class MapRouteInfoMenuFragment extends Fragment {
if (menu == null) {
dismiss();
}
+ getMapActivity().getMapLayers().getMapControlsLayer().showMapControls();
}
@Override
diff --git a/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java b/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java
index 434792feef..b55066047c 100644
--- a/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java
+++ b/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java
@@ -365,6 +365,7 @@ public class PlanRouteFragment extends Fragment implements OsmAndLocationListene
if (mapActivity != null) {
mapActivity.getMyApplication().getLocationProvider().addLocationListener(this);
}
+ getMapActivity().getMapLayers().getMapControlsLayer().showMapControls();
}
@Override
diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java
index cc65e048fe..3345225bae 100644
--- a/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java
+++ b/OsmAnd/src/net/osmand/plus/measurementtool/MeasurementToolFragment.java
@@ -457,6 +457,12 @@ public class MeasurementToolFragment extends Fragment {
return view;
}
+ @Override
+ public void onResume() {
+ super.onResume();
+ getMapActivity().getMapLayers().getMapControlsLayer().showMapControls();
+ }
+
@Override
public void onDestroyView() {
super.onDestroyView();
diff --git a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java
index 7740d4e12b..350c284eb4 100644
--- a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java
+++ b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java
@@ -809,8 +809,11 @@ public class ContextMenuLayer extends OsmandMapLayer {
}
}
- hideVisibleMenues();
- menu.onSingleTapOnMap();
+ boolean processed = hideVisibleMenues();
+ processed |= menu.onSingleTapOnMap();
+ if (!processed) {
+ activity.getMapLayers().getMapControlsLayer().switchMapControlsVisibility();
+ }
return false;
}
@@ -854,10 +857,12 @@ public class ContextMenuLayer extends OsmandMapLayer {
return res;
}
- private void hideVisibleMenues() {
+ private boolean hideVisibleMenues() {
if (multiSelectionMenu.isVisible()) {
multiSelectionMenu.hide();
+ return true;
}
+ return false;
}
private void showContextMenuForSelectedObjects(final LatLon latLon, final Map