Commit graph

36 commits

Author SHA1 Message Date
Michael Kirk 3850ca29b0 Bigger hack to fix problem with lesser hack.
There were two symptoms to this bad "leave app while dismissing keyboard"
state...

The first, most noticeable symptom was that the main window no longer respected
the device orientation. This was caused by UIKit temporarily disabling
autorotate during an interactive keyboard dismissal, and not cleaning up after
itself when we hid the window mid dismissal due to our screen protection
feature. This was solved previously in: ca0a555f8

The second symptom remained, and is solved by this commit. Wherein after
getting in this bad state, the interactive keyboard dismiss function behaves
oddly. Normally when interactively dismissing the keyboard in a scroll view,
the keyboard top follows your finger, until you lift up your finger, at which
point, depending on how close you are to the bottom, the keyboard should
completely dismiss, or cancel and return to its fully popped position. In the
degraded state, the keyboard would follow your finger, but when you lifted your
finger, it would stay where your finger left it, it would not complete/cancel
the dismiss.

The solution is, instead of only re-enabling autorotate, to use a higher level
private method which is called upon complete/cancellation of the interactive
dismissal. The method, `UIScrollToDismissSupport#finishScrollViewTransition`,
as well as re-enabling autorotate, does some other work to restore the UI to
it's normal post interactive-keyboard-dismiss gesture state.

For posterity here's the decompiled pseudocode:

```
/* @class UIScrollToDismissSupport */
-(void)finishScrollViewTransition {
    *(int8_t *)&self->_scrollViewTransitionFinishing = 0x0;
    [self->_controller setInterfaceAutorotationDisabled:0x0];
    [self hideScrollViewHorizontalScrollIndicator:0x0];
    ebx = *ivar_offset(_scrollViewNotificationInfo);
    [*(self + ebx) release];
    *(self + ebx) = 0x0;
    esi = *ivar_offset(_scrollViewForTransition);
    [*(self + esi) release];
    *(self + esi) = 0x0;
    return;
}
```
2019-03-21 10:37:54 -07:00
Michael Kirk 78ce3583ed fix rotation issue 2019-03-18 15:17:13 -07:00
Michael Kirk 680b844f3c Allow all windows to do landscape, fixes:
1. Remove undesirable animation from portrait->landscape when minimizizing in
   landscape and relaunching in landscape.

2. This also seems to fix the intermittently misplaced toolbar when launching
   in landscape. I believe this is a consequence of fix #1
2019-02-21 17:38:52 -07:00
Matthew Chen 12e57ecd25 Improve background screenshots v. orientation. 2019-01-31 10:14:06 -05:00
Matthew Chen bf0d92acfb Landscape layout in gif picker. 2019-01-10 12:04:12 -05:00
Matthew Chen 2ddde368ec Landscape orientation. 2019-01-09 15:22:55 -05:00
Matthew Chen 5adcbac5ef Landscape orientation. 2019-01-09 15:14:36 -05:00
Michael Kirk 85a4fc7b66 restore calling banner
The `statusBarDidChange` is called when entering but not leaving landscape mode
we we've got to update manually before showing the call banner.
2018-11-01 08:43:59 -06:00
Michael Kirk 19f2d0db48 WIP: Media Landscape Mode 2018-11-01 08:43:59 -06:00
Matthew Chen 603e3bf0b6 Move SM singletons to Environment. 2018-10-15 11:34:42 -04:00
Michael Kirk 21e67e9a1d New resolutions for call banner, rename to accommodate multiple X devices.
Only apply work-around to legacy versions where required.
2018-09-19 11:17:40 -06:00
Michael Kirk c7662b5a86 Step 2/2 %s/OWSAssert/OWSAssertDebug for existing previous assert semantics
Going forward, we want to prefer safer asserts, but we don't want to blindly
apply crashing asserts across the codebase
2018-09-07 10:00:48 -06:00
Matthew Chen f473f60111 Apply OWS log functions in Objective-C. 2018-08-27 12:58:52 -04:00
Matthew Chen cc5a480baa Apply OWS log functions in Objective-C. 2018-08-27 12:58:52 -04:00
Matthew Chen 3a50377902 Apply OWS log functions in Objective-C. 2018-08-27 12:58:52 -04:00
Michael Kirk bc2ba63c21 DRY refactor 2018-08-23 10:39:55 -06:00
Michael Kirk 37738c24c5 Allow menuActions + callBanner
// FREEBIE
2018-08-23 10:39:55 -06:00
Michael Kirk 7a5f5476db rename to avoid confusion 2018-07-17 14:49:19 -06:00
Michael Kirk 1a2428a4b0 CR: leave some wiggle room on max window height. 2018-07-13 13:08:04 -06:00
Michael Kirk bdc8181cbc hide menu view controller when resigning active
// FREEBIE
2018-07-13 13:00:27 -06:00
Michael Kirk dde2fd6f33 Hide menu window when vc dismisses.
Normally this isn't possible, just being paranoid.

// FREEBIE
2018-07-13 13:00:27 -06:00
Michael Kirk 82fdd5b883 Split out generic action sheet components
Keep the message specific components separte, so we could re-use the
MenuActionsViewController.
2018-07-13 13:00:27 -06:00
Michael Kirk 3a157d9df6 window level on iOS11
// FREEBIE
2018-07-13 13:00:27 -06:00
Michael Kirk 635c0275db stop observing db notifications while message actions are presented
This let's new messages appear after the message actions are dismissed without
complicating scroll state.
2018-07-13 13:00:27 -06:00
Michael Kirk 22fada2457 don't dismiss keyboard when presenting actions 2018-07-13 13:00:27 -06:00
Michael Kirk aa98963fd9 Abandonded: separate window pattern
Hiding the old window, caused keyboard to resign first responder.
2018-07-13 13:00:27 -06:00
Michael Kirk 6037a440c9 wire up window mgmt 2018-07-13 13:00:27 -06:00
Matthew Chen c71081c875 Respond to CR. 2018-05-30 12:35:55 -04:00
Matthew Chen fbd03a3fdc Apply design for call view back button. 2018-05-25 09:53:37 -04:00
Michael Kirk fc34a0643c CR: annotate device constants
// FREEBIE
2018-05-24 12:28:20 -04:00
Michael Kirk 20424d9a7e remove debug code, reorder for clarity
// FREEBIE
2018-05-24 12:28:20 -04:00
Michael Kirk 4c9808d1a1 Fix iPhoneX layout show status bar above call banner
// FREEBIE
2018-05-24 12:28:20 -04:00
Michael Kirk 3383c5e80c Fixup for iPhoneX
// FREEBIE
2018-05-24 12:28:20 -04:00
Michael Kirk 778e11c2c3 cleanup ahead of PR
// FREEBIE
2018-05-24 12:28:20 -04:00
Michael Kirk 6c7af671bc call banner above status bar for now 2018-05-24 12:28:20 -04:00
Michael Kirk 29d08545e2 Use OWSNavigationController instead of UINavigationController
- [ ] document picker
- [ ] camera picker
- [ ] image picker
- [ ] restore "confirm to go back" behavior (interactive pop gesture?)

// FREEBIE
2018-05-24 12:28:20 -04:00
Renamed from Signal/src/util/OWSWindowManager.m (Browse further)