diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 50092e95c9..f9d3980cf5 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -126,7 +126,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo markerPaddingPx = dpToPx(MARKER_PADDING_DP); markerPaddingXPx = dpToPx(MARKER_PADDING_X_DP); - topScreenPosY = -dpToPx(SHADOW_HEIGHT_TOP_DP); + topScreenPosY = addStatusBarHeightIfNeeded(-dpToPx(SHADOW_HEIGHT_TOP_DP)); menu = getMapActivity().getContextMenu(); view = inflater.inflate(R.layout.map_context_menu_fragment, container, false); @@ -272,11 +272,10 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo openMenuHalfScreen(); return true; } - - if (menu.isLandscapeLayout()) { - if (swipeDetector.onTouchEvent(event)) { - menu.close(); - } + } + if (menu.isLandscapeLayout()) { + if (swipeDetector.onTouchEvent(event)) { + menu.close(); return true; } } @@ -301,6 +300,9 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo hasMoved = true; float y = event.getY(); float newY = getViewY() + (y - dy); + if (menu.isLandscapeLayout() && newY > 0) { + newY = 0; + } setViewY((int) newY, false, false); menuFullHeight = view.getHeight() - (int) newY + 10; @@ -309,11 +311,14 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo mainView.setLayoutParams(lp); mainView.requestLayout(); - velocity.addMovement(event); - velocity.computeCurrentVelocity(1000); - velocityY = Math.abs(velocity.getYVelocity()); - if (velocityY > maxVelocityY) - maxVelocityY = velocityY; + if (velocity != null) { + velocity.addMovement(event); + velocity.computeCurrentVelocity(1000); + velocityY = Math.abs(velocity.getYVelocity()); + if (velocityY > maxVelocityY) { + maxVelocityY = velocityY; + } + } } break; @@ -327,7 +332,9 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo slidingUp = Math.abs(maxVelocityY) > 500 && (currentY - dyMain) < -50; slidingDown = Math.abs(maxVelocityY) > 500 && (currentY - dyMain) > 50; - velocity.recycle(); + if (velocity != null) { + velocity.recycle(); + } boolean skipScreenState = Math.abs(currentY - dyMain) > skipScreenStateLimit; changeMenuState(currentY, skipScreenState, slidingUp, slidingDown); @@ -603,18 +610,20 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo boolean needCloseMenu = false; int oldMenuState = menu.getCurrentMenuState(); - if (slidingDown && !skipScreenState && oldMenuState == MenuState.FULL_SCREEN && currentY < topScreenPosY) { - slidingDown = false; - } - if (menuBottomViewHeight > 0 && slidingUp) { - menu.slideUp(); - if (skipScreenState) { - menu.slideUp(); + if (!menu.isLandscapeLayout()) { + if (slidingDown && !skipScreenState && oldMenuState == MenuState.FULL_SCREEN && currentY < topScreenPosY) { + slidingDown = false; } - } else if (slidingDown) { - needCloseMenu = !menu.slideDown(); - if (!needCloseMenu && skipScreenState) { - menu.slideDown(); + if (menuBottomViewHeight > 0 && slidingUp) { + menu.slideUp(); + if (skipScreenState) { + menu.slideUp(); + } + } else if (slidingDown) { + needCloseMenu = !menu.slideDown(); + if (!needCloseMenu && skipScreenState) { + menu.slideDown(); + } } } int newMenuState = menu.getCurrentMenuState(); @@ -1290,7 +1299,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo case MenuState.FULL_SCREEN: if (currentY != CURRENT_Y_UNDEFINED) { int maxPosY = viewHeight - menuFullHeightMax; - int minPosY = addStatusBarHeightIfNeeded(topScreenPosY); + int minPosY = topScreenPosY; if (maxPosY > minPosY) { maxPosY = minPosY; } @@ -1302,7 +1311,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo posY = currentY; } } else { - posY = addStatusBarHeightIfNeeded(topScreenPosY); + posY = topScreenPosY; } break; default: diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java index f6086484db..be62359549 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MenuController.java @@ -130,6 +130,34 @@ public abstract class MenuController extends BaseMenuController implements Colla this.builder.setLight(isLight()); } + public void onCreated() { + /* + toolbarController = new ContextMenuToolbarController(this); + toolbarController.setTitle(getNameStr()); + toolbarController.setOnBackButtonClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (mapContextMenu != null) { + mapContextMenu.backToolbarAction(MenuController.this); + } + } + }); + toolbarController.setOnTitleClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + } + }); + toolbarController.setOnCloseButtonClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (mapContextMenu != null) { + mapContextMenu.close(); + } + } + }); + */ + } + @Override public void onCollapseExpand(boolean collapsed) { if (mapContextMenu != null) { @@ -217,6 +245,7 @@ public abstract class MenuController extends BaseMenuController implements Colla } menuController.menuType = menuType; menuController.setLatLon(latLon); + menuController.onCreated(); return menuController; }