summaryrefslogtreecommitdiff
path: root/src/ui/uploadwidget.c
diff options
context:
space:
mode:
authorJaakko Keränen <jaakko.keranen@iki.fi>2021-08-01 20:37:00 +0300
committerJaakko Keränen <jaakko.keranen@iki.fi>2021-08-01 20:37:00 +0300
commitcdc63088603169874b1e98aaf4196cc252a1eee9 (patch)
tree18bb186068653865f4fd91bcb385b33a384c8a1f /src/ui/uploadwidget.c
parent395cb3a996482c9e9fc27e00b4259219f85ec663 (diff)
UploadWidget: Allow expanding to full window height
Diffstat (limited to 'src/ui/uploadwidget.c')
-rw-r--r--src/ui/uploadwidget.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/ui/uploadwidget.c b/src/ui/uploadwidget.c
index 7dd26e93..7f2a68bf 100644
--- a/src/ui/uploadwidget.c
+++ b/src/ui/uploadwidget.c
@@ -24,6 +24,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
24#include "labelwidget.h" 24#include "labelwidget.h"
25#include "inputwidget.h" 25#include "inputwidget.h"
26#include "documentwidget.h" 26#include "documentwidget.h"
27#include "root.h"
27#include "color.h" 28#include "color.h"
28#include "command.h" 29#include "command.h"
29#include "gmrequest.h" 30#include "gmrequest.h"
@@ -62,6 +63,20 @@ static void updateProgress_UploadWidget_(iGmRequest *request, size_t current, si
62 total); 63 total);
63} 64}
64 65
66static void updateInputMaxHeight_UploadWidget_(iUploadWidget *d) {
67 iWidget *w = as_Widget(d);
68 /* Calculate how many lines fits vertically in the view. */
69 const iInt2 inputPos = topLeft_Rect(bounds_Widget(as_Widget(d->input)));
70 const int footerHeight = height_Widget(d->token) +
71 height_Widget(findChild_Widget(w, "dialogbuttons")) +
72 6 * gap_UI;
73 const int avail = bottom_Rect(safeRect_Root(w->root)) - footerHeight;
74 setLineLimits_InputWidget(d->input,
75 minLines_InputWidget(d->input),
76 iMaxi(minLines_InputWidget(d->input),
77 (avail - inputPos.y) / lineHeight_Text(monospace_FontId)));
78}
79
65void init_UploadWidget(iUploadWidget *d) { 80void init_UploadWidget(iUploadWidget *d) {
66 iWidget *w = as_Widget(d); 81 iWidget *w = as_Widget(d);
67 init_Widget(w); 82 init_Widget(w);
@@ -152,6 +167,7 @@ void init_UploadWidget(iUploadWidget *d) {
152 setFlags_Widget(as_Widget(d->token), expand_WidgetFlag, iTrue); 167 setFlags_Widget(as_Widget(d->token), expand_WidgetFlag, iTrue);
153 setFocus_Widget(as_Widget(d->input)); 168 setFocus_Widget(as_Widget(d->input));
154 setBackupFileName_InputWidget(d->input, "uploadbackup.txt"); 169 setBackupFileName_InputWidget(d->input, "uploadbackup.txt");
170 updateInputMaxHeight_UploadWidget_(d);
155} 171}
156 172
157void deinit_UploadWidget(iUploadWidget *d) { 173void deinit_UploadWidget(iUploadWidget *d) {
@@ -214,6 +230,9 @@ static void requestFinished_UploadWidget_(iUploadWidget *d, iGmRequest *req) {
214static iBool processEvent_UploadWidget_(iUploadWidget *d, const SDL_Event *ev) { 230static iBool processEvent_UploadWidget_(iUploadWidget *d, const SDL_Event *ev) {
215 iWidget *w = as_Widget(d); 231 iWidget *w = as_Widget(d);
216 const char *cmd = command_UserEvent(ev); 232 const char *cmd = command_UserEvent(ev);
233 if (isResize_UserEvent(ev)) {
234 updateInputMaxHeight_UploadWidget_(d);
235 }
217 if (isCommand_Widget(w, ev, "upload.cancel")) { 236 if (isCommand_Widget(w, ev, "upload.cancel")) {
218 setupSheetTransition_Mobile(w, iFalse); 237 setupSheetTransition_Mobile(w, iFalse);
219 destroy_Widget(w); 238 destroy_Widget(w);