summaryrefslogtreecommitdiff
path: root/src/ui/root.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/root.c')
-rw-r--r--src/ui/root.c54
1 files changed, 51 insertions, 3 deletions
diff --git a/src/ui/root.c b/src/ui/root.c
index a792e93d..7b2b5b15 100644
--- a/src/ui/root.c
+++ b/src/ui/root.c
@@ -685,6 +685,34 @@ static iBool handleNavBarCommands_(iWidget *navBar, const char *cmd) {
685 } 685 }
686 return iTrue; 686 return iTrue;
687 } 687 }
688 else if (deviceType_App() != desktop_AppDeviceType &&
689 (equal_Command(cmd, "focus.gained") || equal_Command(cmd, "focus.lost"))) {
690 iInputWidget *url = findChild_Widget(navBar, "url");
691 if (pointer_Command(cmd) == url) {
692 const iBool isFocused = equal_Command(cmd, "focus.gained");
693 setFlags_Widget(findChild_Widget(navBar, "navbar.clear"), hidden_WidgetFlag, !isFocused);
694 showCollapsed_Widget(findChild_Widget(navBar, "navbar.cancel"), isFocused);
695 showCollapsed_Widget(findChild_Widget(navBar, "pagemenubutton"), !isFocused);
696 showCollapsed_Widget(findChild_Widget(navBar, "reload"), !isFocused);
697 }
698 return iFalse;
699 }
700 else if (equal_Command(cmd, "navbar.clear")) {
701 iInputWidget *url = findChild_Widget(navBar, "url");
702 selectAll_InputWidget(url);
703 /* Emulate a Backspace keypress. */
704 class_InputWidget(url)->processEvent(
705 as_Widget(url),
706 (SDL_Event *) &(SDL_KeyboardEvent){ .type = SDL_KEYDOWN,
707 .timestamp = SDL_GetTicks(),
708 .state = SDL_PRESSED,
709 .keysym = { .sym = SDLK_BACKSPACE } });
710 return iTrue;
711 }
712 else if (equal_Command(cmd, "navbar.cancel")) {
713 setFocus_Widget(NULL);
714 return iTrue;
715 }
688 else if (equal_Command(cmd, "input.edited")) { 716 else if (equal_Command(cmd, "input.edited")) {
689 iAnyObject * url = findChild_Widget(navBar, "url"); 717 iAnyObject * url = findChild_Widget(navBar, "url");
690 const iString *text = text_InputWidget(url); 718 const iString *text = text_InputWidget(url);
@@ -941,7 +969,7 @@ void updateMetrics_Root(iRoot *d) {
941 setFixedSize_Widget(appIcon, init_I2(appIconSize_Root(), appMin->rect.size.y)); 969 setFixedSize_Widget(appIcon, init_I2(appIconSize_Root(), appMin->rect.size.y));
942 } 970 }
943 iWidget *navBar = findChild_Widget(d->widget, "navbar"); 971 iWidget *navBar = findChild_Widget(d->widget, "navbar");
944 iWidget *lock = findChild_Widget(navBar, "navbar.lock"); 972// iWidget *lock = findChild_Widget(navBar, "navbar.lock");
945 iWidget *url = findChild_Widget(d->widget, "url"); 973 iWidget *url = findChild_Widget(d->widget, "url");
946 iWidget *rightEmbed = findChild_Widget(navBar, "url.rightembed"); 974 iWidget *rightEmbed = findChild_Widget(navBar, "url.rightembed");
947 iWidget *embedPad = findChild_Widget(navBar, "url.embedpad"); 975 iWidget *embedPad = findChild_Widget(navBar, "url.embedpad");
@@ -1044,6 +1072,7 @@ void createUserInterface_Root(iRoot *d) {
1044 /* Navigation bar. */ { 1072 /* Navigation bar. */ {
1045 navBar = new_Widget(); 1073 navBar = new_Widget();
1046 setId_Widget(navBar, "navbar"); 1074 setId_Widget(navBar, "navbar");
1075 setDrawBufferEnabled_Widget(navBar, iTrue);
1047 setFlags_Widget(navBar, 1076 setFlags_Widget(navBar,
1048 hittable_WidgetFlag | /* context menu */ 1077 hittable_WidgetFlag | /* context menu */
1049 arrangeHeight_WidgetFlag | 1078 arrangeHeight_WidgetFlag |
@@ -1095,6 +1124,16 @@ void createUserInterface_Root(iRoot *d) {
1095 setFont_LabelWidget(lock, symbols_FontId + uiNormal_FontSize); 1124 setFont_LabelWidget(lock, symbols_FontId + uiNormal_FontSize);
1096 updateTextCStr_LabelWidget(lock, "\U0001f512"); 1125 updateTextCStr_LabelWidget(lock, "\U0001f512");
1097 } 1126 }
1127 /* Button for clearing the URL bar contents. */ {
1128 iLabelWidget *clear = addChildFlags_Widget(
1129 as_Widget(url),
1130 iClob(newIcon_LabelWidget(delete_Icon, 0, 0, "navbar.clear")),
1131 hidden_WidgetFlag | embedFlags | moveToParentLeftEdge_WidgetFlag);
1132 setId_Widget(as_Widget(clear), "navbar.clear");
1133 setFont_LabelWidget(clear, symbols2_FontId + uiNormal_FontSize);
1134 setFlags_Widget(as_Widget(clear), noBackground_WidgetFlag, iFalse);
1135 setBackgroundColor_Widget(as_Widget(clear), uiBackground_ColorId);
1136 }
1098 iWidget *rightEmbed = new_Widget(); 1137 iWidget *rightEmbed = new_Widget();
1099 setId_Widget(rightEmbed, "url.rightembed"); 1138 setId_Widget(rightEmbed, "url.rightembed");
1100 addChildFlags_Widget(as_Widget(url), 1139 addChildFlags_Widget(as_Widget(url),
@@ -1151,6 +1190,13 @@ void createUserInterface_Root(iRoot *d) {
1151 setFlags_Widget(urlButtons, embedFlags | arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag, iTrue); 1190 setFlags_Widget(urlButtons, embedFlags | arrangeHorizontal_WidgetFlag | arrangeSize_WidgetFlag, iTrue);
1152 /* Mobile page menu. */ 1191 /* Mobile page menu. */
1153 if (deviceType_App() != desktop_AppDeviceType) { 1192 if (deviceType_App() != desktop_AppDeviceType) {
1193 iLabelWidget *navCancel = new_LabelWidget("${cancel}", "navbar.cancel");
1194 addChildFlags_Widget(urlButtons, iClob(navCancel),
1195 (embedFlags | tight_WidgetFlag | hidden_WidgetFlag |
1196 collapse_WidgetFlag) & ~noBackground_WidgetFlag);
1197 as_Widget(navCancel)->sizeRef = as_Widget(url);
1198// setFont_LabelWidget(navCancel, defaultBold_FontId);
1199 setId_Widget(as_Widget(navCancel), "navbar.cancel");
1154 iLabelWidget *pageMenuButton; 1200 iLabelWidget *pageMenuButton;
1155 /* In a mobile layout, the reload button is replaced with the Page/Ellipsis menu. */ 1201 /* In a mobile layout, the reload button is replaced with the Page/Ellipsis menu. */
1156 pageMenuButton = makeMenuButton_LabelWidget(pageMenuCStr_, 1202 pageMenuButton = makeMenuButton_LabelWidget(pageMenuCStr_,
@@ -1172,13 +1218,14 @@ void createUserInterface_Root(iRoot *d) {
1172 setId_Widget(as_Widget(pageMenuButton), "pagemenubutton"); 1218 setId_Widget(as_Widget(pageMenuButton), "pagemenubutton");
1173 setFont_LabelWidget(pageMenuButton, uiContentBold_FontId); 1219 setFont_LabelWidget(pageMenuButton, uiContentBold_FontId);
1174 setAlignVisually_LabelWidget(pageMenuButton, iTrue); 1220 setAlignVisually_LabelWidget(pageMenuButton, iTrue);
1175 addChildFlags_Widget(urlButtons, iClob(pageMenuButton), embedFlags | tight_WidgetFlag); 1221 addChildFlags_Widget(urlButtons, iClob(pageMenuButton),
1222 embedFlags | tight_WidgetFlag | collapse_WidgetFlag);
1176 updateSize_LabelWidget(pageMenuButton); 1223 updateSize_LabelWidget(pageMenuButton);
1177 } 1224 }
1178 /* Reload button. */ { 1225 /* Reload button. */ {
1179 iLabelWidget *reload = newIcon_LabelWidget(reloadCStr_, 0, 0, "navigate.reload"); 1226 iLabelWidget *reload = newIcon_LabelWidget(reloadCStr_, 0, 0, "navigate.reload");
1180 setId_Widget(as_Widget(reload), "reload"); 1227 setId_Widget(as_Widget(reload), "reload");
1181 addChildFlags_Widget(urlButtons, iClob(reload), embedFlags); 1228 addChildFlags_Widget(urlButtons, iClob(reload), embedFlags | collapse_WidgetFlag);
1182 updateSize_LabelWidget(reload); 1229 updateSize_LabelWidget(reload);
1183 } 1230 }
1184 addChildFlags_Widget(as_Widget(url), iClob(urlButtons), moveToParentRightEdge_WidgetFlag); 1231 addChildFlags_Widget(as_Widget(url), iClob(urlButtons), moveToParentRightEdge_WidgetFlag);
@@ -1287,6 +1334,7 @@ void createUserInterface_Root(iRoot *d) {
1287 iWidget *toolBar = new_Widget(); 1334 iWidget *toolBar = new_Widget();
1288 addChild_Widget(root, iClob(toolBar)); 1335 addChild_Widget(root, iClob(toolBar));
1289 setId_Widget(toolBar, "toolbar"); 1336 setId_Widget(toolBar, "toolbar");
1337 setDrawBufferEnabled_Widget(toolBar, iTrue);
1290 setCommandHandler_Widget(toolBar, handleToolBarCommands_); 1338 setCommandHandler_Widget(toolBar, handleToolBarCommands_);
1291 setFlags_Widget(toolBar, moveToParentBottomEdge_WidgetFlag | 1339 setFlags_Widget(toolBar, moveToParentBottomEdge_WidgetFlag |
1292 parentCannotResizeHeight_WidgetFlag | 1340 parentCannotResizeHeight_WidgetFlag |