diff options
Diffstat (limited to 'src/ui/root.c')
-rw-r--r-- | src/ui/root.c | 54 |
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 | |