diff options
Diffstat (limited to 'src/ui/mobile.c')
-rw-r--r-- | src/ui/mobile.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/ui/mobile.c b/src/ui/mobile.c index 9e4fef84..5382cbce 100644 --- a/src/ui/mobile.c +++ b/src/ui/mobile.c | |||
@@ -100,6 +100,16 @@ static iWidget *findTitleLabel_(iWidget *panel) { | |||
100 | return NULL; | 100 | return NULL; |
101 | } | 101 | } |
102 | 102 | ||
103 | static void updateCertListHeight_(iWidget *detailStack) { | ||
104 | iWidget *certList = findChild_Widget(detailStack, "certlist"); | ||
105 | if (certList) { | ||
106 | setFixedSize_Widget(certList, | ||
107 | init_I2(-1, | ||
108 | -1 * gap_UI + bottom_Rect(safeRect_Root(certList->root)) - | ||
109 | top_Rect(boundsWithoutVisualOffset_Widget(certList)))); | ||
110 | } | ||
111 | } | ||
112 | |||
103 | static iBool mainDetailSplitHandler_(iWidget *mainDetailSplit, const char *cmd) { | 113 | static iBool mainDetailSplitHandler_(iWidget *mainDetailSplit, const char *cmd) { |
104 | if (equal_Command(cmd, "window.resized")) { | 114 | if (equal_Command(cmd, "window.resized")) { |
105 | const iBool isPortrait = (deviceType_App() == phone_AppDeviceType && isPortrait_App()); | 115 | const iBool isPortrait = (deviceType_App() == phone_AppDeviceType && isPortrait_App()); |
@@ -147,6 +157,7 @@ static iBool mainDetailSplitHandler_(iWidget *mainDetailSplit, const char *cmd) | |||
147 | setPadding_Widget(panel, pad, 0, pad, pad); | 157 | setPadding_Widget(panel, pad, 0, pad, pad); |
148 | } | 158 | } |
149 | arrange_Widget(mainDetailSplit); | 159 | arrange_Widget(mainDetailSplit); |
160 | updateCertListHeight_(detailStack); | ||
150 | } | 161 | } |
151 | else if (equal_Command(cmd, "mouse.clicked") && arg_Command(cmd)) { | 162 | else if (equal_Command(cmd, "mouse.clicked") && arg_Command(cmd)) { |
152 | if (focus_Widget() && class_Widget(focus_Widget()) == &Class_InputWidget) { | 163 | if (focus_Widget() && class_Widget(focus_Widget()) == &Class_InputWidget) { |
@@ -199,6 +210,7 @@ static iBool topPanelHandler_(iWidget *topPanel, const char *cmd) { | |||
199 | postCommand_Widget(topPanel, "panel.changed arg:%d", panelIndex); | 210 | postCommand_Widget(topPanel, "panel.changed arg:%d", panelIndex); |
200 | //printTree_Widget(findDetailStack_(topPanel)); | 211 | //printTree_Widget(findDetailStack_(topPanel)); |
201 | // updateVisible_ListWidget(findChild_Widget(findDetailStack_(topPanel), "certlist")); | 212 | // updateVisible_ListWidget(findChild_Widget(findDetailStack_(topPanel), "certlist")); |
213 | updateCertListHeight_(findDetailStack_(topPanel)); | ||
202 | return iTrue; | 214 | return iTrue; |
203 | } | 215 | } |
204 | if (equal_Command(cmd, "swipe.back")) { | 216 | if (equal_Command(cmd, "swipe.back")) { |
@@ -619,8 +631,6 @@ void makePanelItem_Mobile(iWidget *panel, const iMenuItem *item) { | |||
619 | widget = as_Widget(certList); | 631 | widget = as_Widget(certList); |
620 | updateItems_CertListWidget(certList); | 632 | updateItems_CertListWidget(certList); |
621 | invalidate_ListWidget(list); | 633 | invalidate_ListWidget(list); |
622 | setFixedSize_Widget(widget, | ||
623 | init_I2(-1, numItems_ListWidget(list) * itemHeight_ListWidget(list))); | ||
624 | } | 634 | } |
625 | else if (equal_Command(spec, "button")) { | 635 | else if (equal_Command(spec, "button")) { |
626 | widget = as_Widget(heading = makePanelButton_(label, item->command)); | 636 | widget = as_Widget(heading = makePanelButton_(label, item->command)); |
@@ -885,18 +895,21 @@ void setupMenuTransition_Mobile(iWidget *sheet, iBool isIncoming) { | |||
885 | if (!isUsingPanelLayout_Mobile()) { | 895 | if (!isUsingPanelLayout_Mobile()) { |
886 | return; | 896 | return; |
887 | } | 897 | } |
888 | const iBool isSlidePanel = (flags_Widget(sheet) & horizontalOffset_WidgetFlag) != 0; | 898 | const iBool isHorizPanel = (flags_Widget(sheet) & horizontalOffset_WidgetFlag) != 0; |
889 | if (isSlidePanel && isLandscape_App()) { | 899 | if (isHorizPanel && isLandscape_App()) { |
890 | return; | 900 | return; |
891 | } | 901 | } |
902 | const int maxOffset = isHorizPanel ? width_Widget(sheet) | ||
903 | : isPortraitPhone_App() ? height_Widget(sheet) | ||
904 | : (12 * gap_UI); | ||
892 | if (isIncoming) { | 905 | if (isIncoming) { |
893 | setVisualOffset_Widget(sheet, isSlidePanel ? width_Widget(sheet) : height_Widget(sheet), 0, 0); | 906 | setVisualOffset_Widget(sheet, maxOffset, 0, 0); |
894 | setVisualOffset_Widget(sheet, 0, 330, easeOut_AnimFlag | softer_AnimFlag); | 907 | setVisualOffset_Widget(sheet, 0, 330, easeOut_AnimFlag | softer_AnimFlag); |
895 | } | 908 | } |
896 | else { | 909 | else { |
897 | const iBool wasDragged = iAbs(value_Anim(&sheet->visualOffset) - 0) > 1; | 910 | const iBool wasDragged = iAbs(value_Anim(&sheet->visualOffset) - 0) > 1; |
898 | setVisualOffset_Widget(sheet, | 911 | setVisualOffset_Widget(sheet, |
899 | isSlidePanel ? width_Widget(sheet) : height_Widget(sheet), | 912 | maxOffset, |
900 | wasDragged ? 100 : 200, | 913 | wasDragged ? 100 : 200, |
901 | wasDragged ? 0 : easeIn_AnimFlag | softer_AnimFlag); | 914 | wasDragged ? 0 : easeIn_AnimFlag | softer_AnimFlag); |
902 | } | 915 | } |