mirror of
				https://github.com/KokaKiwi/BarInsta
				synced 2025-10-31 11:35:34 +00:00 
			
		
		
		
	Merge pull request #37 from ammargitham/bugfix/fix-stories-horizontal-scroll-issue
Fix horizontal drag on stories scrolls tabs instead of stories
This commit is contained in:
		
						commit
						6f0c9e98ad
					
				| @ -27,7 +27,9 @@ import awais.instagrabber.R; | |||||||
| public final class RemixDrawerLayout extends MouseDrawer implements MouseDrawer.DrawerListener { | public final class RemixDrawerLayout extends MouseDrawer implements MouseDrawer.DrawerListener { | ||||||
|     private final FrameLayout frameLayout; |     private final FrameLayout frameLayout; | ||||||
|     private View drawerView; |     private View drawerView; | ||||||
|     private RecyclerView scroll, feedPosts; |     private RecyclerView highlightsList; | ||||||
|  |     private RecyclerView feedPosts; | ||||||
|  |     private RecyclerView feedStories; | ||||||
|     private float startX; |     private float startX; | ||||||
| 
 | 
 | ||||||
|     public RemixDrawerLayout(@NonNull final Context context) { |     public RemixDrawerLayout(@NonNull final Context context) { | ||||||
| @ -91,10 +93,28 @@ public final class RemixDrawerLayout extends MouseDrawer implements MouseDrawer. | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // thanks to Fede @ https://stackoverflow.com/questions/6920137/android-viewpager-and-horizontalscrollview/7258579#7258579 |         // thanks to Fede @ https://stackoverflow.com/questions/6920137/android-viewpager-and-horizontalscrollview/7258579#7258579 | ||||||
|         if (scroll == null) scroll = findViewById(R.id.highlightsList); |         if (highlightsList == null) highlightsList = findViewById(R.id.highlightsList); | ||||||
|         if (scroll != null) { |         if (highlightsList != null) { | ||||||
|             final boolean touchIsInRecycler = x >= scroll.getLeft() && x < scroll.getRight() |             final Boolean result = handleHorizontalRecyclerView(ev, highlightsList); | ||||||
|                     && y >= scroll.getTop() && scroll.getBottom() > y; |             if (result != null) { | ||||||
|  |                 return result; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if (feedStories == null) feedStories = findViewById(R.id.feedStories); | ||||||
|  |         if (feedStories != null) { | ||||||
|  |             final Boolean result = handleHorizontalRecyclerView(ev, feedStories); | ||||||
|  |             if (result != null) { | ||||||
|  |                 return result; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return super.onInterceptTouchEvent(ev); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private Boolean handleHorizontalRecyclerView(@NonNull final MotionEvent ev, final RecyclerView view) { | ||||||
|  |         final float x = ev.getX(); | ||||||
|  |         final float y = ev.getY(); | ||||||
|  |         final boolean touchIsInRecycler = x >= view.getLeft() && x < view.getRight() | ||||||
|  |                 && y >= view.getTop() && view.getBottom() > y; | ||||||
| 
 | 
 | ||||||
|         if (touchIsInRecycler) { |         if (touchIsInRecycler) { | ||||||
|             final int action = ev.getActionMasked(); |             final int action = ev.getActionMasked(); | ||||||
| @ -103,23 +123,22 @@ public final class RemixDrawerLayout extends MouseDrawer implements MouseDrawer. | |||||||
| 
 | 
 | ||||||
|             if (action == MotionEvent.ACTION_DOWN) startX = x; |             if (action == MotionEvent.ACTION_DOWN) startX = x; | ||||||
|             else if (action == MotionEvent.ACTION_MOVE) { |             else if (action == MotionEvent.ACTION_MOVE) { | ||||||
|                     final int scrollRange = scroll.computeHorizontalScrollRange(); |                 final int scrollRange = view.computeHorizontalScrollRange(); | ||||||
|                     final int scrollOffset = scroll.computeHorizontalScrollOffset(); |                 final int scrollOffset = view.computeHorizontalScrollOffset(); | ||||||
|                     final boolean scrollable = scrollRange > scroll.getWidth(); |                 final boolean scrollable = scrollRange > view.getWidth(); | ||||||
|                 final boolean draggingFromRight = startX > x; |                 final boolean draggingFromRight = startX > x; | ||||||
| 
 | 
 | ||||||
|                 if (scrollOffset < 1) { |                 if (scrollOffset < 1) { | ||||||
|                     if (!scrollable) return super.onInterceptTouchEvent(ev); |                     if (!scrollable) return super.onInterceptTouchEvent(ev); | ||||||
|                     else if (!draggingFromRight) return super.onInterceptTouchEvent(ev); |                     else if (!draggingFromRight) return super.onInterceptTouchEvent(ev); | ||||||
|                     } else if (scrollable && draggingFromRight && scrollRange - scrollOffset == scroll.computeHorizontalScrollExtent()) { |                 } else if (scrollable && draggingFromRight && scrollRange - scrollOffset == view.computeHorizontalScrollExtent()) { | ||||||
|                     return super.onInterceptTouchEvent(ev); |                     return super.onInterceptTouchEvent(ev); | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|                 return false; |                 return false; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         } |         return null; | ||||||
|         return super.onInterceptTouchEvent(ev); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user