diff options
author | Jaakko Keränen <jaakko.keranen@iki.fi> | 2021-06-25 16:26:53 +0300 |
---|---|---|
committer | Jaakko Keränen <jaakko.keranen@iki.fi> | 2021-06-25 16:26:53 +0300 |
commit | 5dbc85eaaa1bd0a0fc11dd76a75ece2efe763df5 (patch) | |
tree | 9721fb7aced603adb10b9bb3f3beb3f8d5fba973 /src/ui/sidebarwidget.c | |
parent | 95c527db1484f7758a180c6de051d0182c3b2e81 (diff) | |
parent | f99a9111170f2ff28383fd3172fdaf4b9a1ba069 (diff) |
Merge branch 'work/v1.6' into work/serious-unicode
# Conflicts:
# res/fonts/SmolEmoji-Regular.ttf
Diffstat (limited to 'src/ui/sidebarwidget.c')
-rw-r--r-- | src/ui/sidebarwidget.c | 91 |
1 files changed, 56 insertions, 35 deletions
diff --git a/src/ui/sidebarwidget.c b/src/ui/sidebarwidget.c index 27646b22..c0a22e99 100644 --- a/src/ui/sidebarwidget.c +++ b/src/ui/sidebarwidget.c | |||
@@ -523,15 +523,17 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { | |||
523 | addChild_Widget(div, iClob(makePadding_Widget(gap_UI))); | 523 | addChild_Widget(div, iClob(makePadding_Widget(gap_UI))); |
524 | addChild_Widget(div, iClob(new_LabelWidget("${menu.identity.import}", "ident.import"))); | 524 | addChild_Widget(div, iClob(new_LabelWidget("${menu.identity.import}", "ident.import"))); |
525 | addChildFlags_Widget(div, iClob(new_Widget()), expand_WidgetFlag); /* pad */ | 525 | addChildFlags_Widget(div, iClob(new_Widget()), expand_WidgetFlag); /* pad */ |
526 | iLabelWidget *linkLabel; | ||
526 | setBackgroundColor_Widget( | 527 | setBackgroundColor_Widget( |
527 | addChildFlags_Widget( | 528 | addChildFlags_Widget( |
528 | div, | 529 | div, |
529 | iClob(new_LabelWidget(format_CStr(cstr_Lang("ident.gotohelp"), | 530 | iClob(linkLabel = new_LabelWidget(format_CStr(cstr_Lang("ident.gotohelp"), |
530 | uiTextStrong_ColorEscape, | 531 | uiTextStrong_ColorEscape, |
531 | restore_ColorEscape), | 532 | restore_ColorEscape), |
532 | "!open newtab:1 gotoheading:1.6 url:about:help")), | 533 | "!open newtab:1 gotoheading:1.6 url:about:help")), |
533 | frameless_WidgetFlag | fixedHeight_WidgetFlag | wrapText_WidgetFlag), | 534 | frameless_WidgetFlag | fixedHeight_WidgetFlag), |
534 | uiBackgroundSidebar_ColorId); | 535 | uiBackgroundSidebar_ColorId); |
536 | setWrap_LabelWidget(linkLabel, iTrue); | ||
535 | addChild_Widget(d->blank, iClob(div)); | 537 | addChild_Widget(d->blank, iClob(div)); |
536 | } | 538 | } |
537 | // arrange_Widget(d->blank); | 539 | // arrange_Widget(d->blank); |
@@ -625,13 +627,14 @@ static void updateMetrics_SidebarWidget_(iSidebarWidget *d) { | |||
625 | void init_SidebarWidget(iSidebarWidget *d, enum iSidebarSide side) { | 627 | void init_SidebarWidget(iSidebarWidget *d, enum iSidebarSide side) { |
626 | iWidget *w = as_Widget(d); | 628 | iWidget *w = as_Widget(d); |
627 | init_Widget(w); | 629 | init_Widget(w); |
628 | setId_Widget(w, side == left_SideBarSide ? "sidebar" : "sidebar2"); | 630 | setId_Widget(w, side == left_SidebarSide ? "sidebar" : "sidebar2"); |
629 | initCopy_String(&d->cmdPrefix, id_Widget(w)); | 631 | initCopy_String(&d->cmdPrefix, id_Widget(w)); |
630 | appendChar_String(&d->cmdPrefix, '.'); | 632 | appendChar_String(&d->cmdPrefix, '.'); |
631 | setBackgroundColor_Widget(w, none_ColorId); | 633 | setBackgroundColor_Widget(w, none_ColorId); |
632 | setFlags_Widget(w, | 634 | setFlags_Widget(w, |
633 | collapse_WidgetFlag | hidden_WidgetFlag | arrangeHorizontal_WidgetFlag | | 635 | collapse_WidgetFlag | hidden_WidgetFlag | arrangeHorizontal_WidgetFlag | |
634 | resizeWidthOfChildren_WidgetFlag, | 636 | resizeWidthOfChildren_WidgetFlag | noFadeBackground_WidgetFlag | |
637 | noShadowBorder_WidgetFlag, | ||
635 | iTrue); | 638 | iTrue); |
636 | iZap(d->modeScroll); | 639 | iZap(d->modeScroll); |
637 | d->side = side; | 640 | d->side = side; |
@@ -659,7 +662,7 @@ void init_SidebarWidget(iSidebarWidget *d, enum iSidebarSide side) { | |||
659 | d->actions = NULL; | 662 | d->actions = NULL; |
660 | /* On a phone, the right sidebar is used exclusively for Identities. */ | 663 | /* On a phone, the right sidebar is used exclusively for Identities. */ |
661 | const iBool isPhone = deviceType_App() == phone_AppDeviceType; | 664 | const iBool isPhone = deviceType_App() == phone_AppDeviceType; |
662 | if (!isPhone || d->side == left_SideBarSide) { | 665 | if (!isPhone || d->side == left_SidebarSide) { |
663 | iWidget *buttons = new_Widget(); | 666 | iWidget *buttons = new_Widget(); |
664 | setId_Widget(buttons, "buttons"); | 667 | setId_Widget(buttons, "buttons"); |
665 | for (int i = 0; i < max_SidebarMode; i++) { | 668 | for (int i = 0; i < max_SidebarMode; i++) { |
@@ -678,8 +681,8 @@ void init_SidebarWidget(iSidebarWidget *d, enum iSidebarSide side) { | |||
678 | iClob(buttons), | 681 | iClob(buttons), |
679 | arrangeHorizontal_WidgetFlag | | 682 | arrangeHorizontal_WidgetFlag | |
680 | resizeWidthOfChildren_WidgetFlag | | 683 | resizeWidthOfChildren_WidgetFlag | |
681 | arrangeHeight_WidgetFlag | resizeToParentWidth_WidgetFlag | | 684 | arrangeHeight_WidgetFlag | resizeToParentWidth_WidgetFlag); // | |
682 | drawBackgroundToHorizontalSafeArea_WidgetFlag); | 685 | // drawBackgroundToHorizontalSafeArea_WidgetFlag); |
683 | setBackgroundColor_Widget(buttons, uiBackgroundSidebar_ColorId); | 686 | setBackgroundColor_Widget(buttons, uiBackgroundSidebar_ColorId); |
684 | } | 687 | } |
685 | else { | 688 | else { |
@@ -700,13 +703,13 @@ void init_SidebarWidget(iSidebarWidget *d, enum iSidebarSide side) { | |||
700 | setPadding_Widget(as_Widget(d->list), 0, gap_UI, 0, gap_UI); | 703 | setPadding_Widget(as_Widget(d->list), 0, gap_UI, 0, gap_UI); |
701 | addChildFlags_Widget(listAndActions, | 704 | addChildFlags_Widget(listAndActions, |
702 | iClob(d->list), | 705 | iClob(d->list), |
703 | expand_WidgetFlag | drawBackgroundToHorizontalSafeArea_WidgetFlag); | 706 | expand_WidgetFlag); // | drawBackgroundToHorizontalSafeArea_WidgetFlag); |
704 | setId_Widget(addChildPosFlags_Widget(listAndActions, | 707 | setId_Widget(addChildPosFlags_Widget(listAndActions, |
705 | iClob(d->actions = new_Widget()), | 708 | iClob(d->actions = new_Widget()), |
706 | isPhone ? front_WidgetAddPos : back_WidgetAddPos, | 709 | isPhone ? front_WidgetAddPos : back_WidgetAddPos, |
707 | arrangeHorizontal_WidgetFlag | arrangeHeight_WidgetFlag | | 710 | arrangeHorizontal_WidgetFlag | arrangeHeight_WidgetFlag | |
708 | resizeWidthOfChildren_WidgetFlag | | 711 | resizeWidthOfChildren_WidgetFlag), // | |
709 | drawBackgroundToHorizontalSafeArea_WidgetFlag), | 712 | // drawBackgroundToHorizontalSafeArea_WidgetFlag), |
710 | "actions"); | 713 | "actions"); |
711 | setBackgroundColor_Widget(d->actions, uiBackgroundSidebar_ColorId); | 714 | setBackgroundColor_Widget(d->actions, uiBackgroundSidebar_ColorId); |
712 | d->contextItem = NULL; | 715 | d->contextItem = NULL; |
@@ -715,24 +718,24 @@ void init_SidebarWidget(iSidebarWidget *d, enum iSidebarSide side) { | |||
715 | addChildFlags_Widget(content, iClob(d->blank), resizeChildren_WidgetFlag); | 718 | addChildFlags_Widget(content, iClob(d->blank), resizeChildren_WidgetFlag); |
716 | addChildFlags_Widget(vdiv, iClob(content), expand_WidgetFlag); | 719 | addChildFlags_Widget(vdiv, iClob(content), expand_WidgetFlag); |
717 | setMode_SidebarWidget(d, | 720 | setMode_SidebarWidget(d, |
718 | deviceType_App() == phone_AppDeviceType && d->side == right_SideBarSide ? | 721 | deviceType_App() == phone_AppDeviceType && d->side == right_SidebarSide ? |
719 | identities_SidebarMode : bookmarks_SidebarMode); | 722 | identities_SidebarMode : bookmarks_SidebarMode); |
720 | d->resizer = | 723 | d->resizer = |
721 | addChildFlags_Widget(w, | 724 | addChildFlags_Widget(w, |
722 | iClob(new_Widget()), | 725 | iClob(new_Widget()), |
723 | hover_WidgetFlag | commandOnClick_WidgetFlag | fixedWidth_WidgetFlag | | 726 | hover_WidgetFlag | commandOnClick_WidgetFlag | fixedWidth_WidgetFlag | |
724 | resizeToParentHeight_WidgetFlag | | 727 | resizeToParentHeight_WidgetFlag | |
725 | (side == left_SideBarSide ? moveToParentRightEdge_WidgetFlag | 728 | (side == left_SidebarSide ? moveToParentRightEdge_WidgetFlag |
726 | : moveToParentLeftEdge_WidgetFlag)); | 729 | : moveToParentLeftEdge_WidgetFlag)); |
727 | if (deviceType_App() == phone_AppDeviceType) { | 730 | if (deviceType_App() == phone_AppDeviceType) { |
728 | setFlags_Widget(d->resizer, hidden_WidgetFlag | disabled_WidgetFlag, iTrue); | 731 | setFlags_Widget(d->resizer, hidden_WidgetFlag | disabled_WidgetFlag, iTrue); |
729 | } | 732 | } |
730 | setId_Widget(d->resizer, side == left_SideBarSide ? "sidebar.grab" : "sidebar2.grab"); | 733 | setId_Widget(d->resizer, side == left_SidebarSide ? "sidebar.grab" : "sidebar2.grab"); |
731 | setBackgroundColor_Widget(d->resizer, none_ColorId); | 734 | setBackgroundColor_Widget(d->resizer, none_ColorId); |
732 | d->menu = NULL; | 735 | d->menu = NULL; |
733 | addAction_Widget(w, SDLK_r, KMOD_PRIMARY | KMOD_SHIFT, "feeds.refresh"); | 736 | addAction_Widget(w, SDLK_r, KMOD_PRIMARY | KMOD_SHIFT, "feeds.refresh"); |
734 | updateMetrics_SidebarWidget_(d); | 737 | updateMetrics_SidebarWidget_(d); |
735 | if (side == left_SideBarSide) { | 738 | if (side == left_SidebarSide) { |
736 | postCommand_App("~sidebar.update"); /* unread count */ | 739 | postCommand_App("~sidebar.update"); /* unread count */ |
737 | } | 740 | } |
738 | } | 741 | } |
@@ -773,6 +776,7 @@ static void itemClicked_SidebarWidget_(iSidebarWidget *d, iSidebarItem *item, si | |||
773 | const iGmHeading *head = constAt_Array(headings_GmDocument(doc), item->id); | 776 | const iGmHeading *head = constAt_Array(headings_GmDocument(doc), item->id); |
774 | postCommandf_App("document.goto loc:%p", head->text.start); | 777 | postCommandf_App("document.goto loc:%p", head->text.start); |
775 | dismissPortraitPhoneSidebars_Root(as_Widget(d)->root); | 778 | dismissPortraitPhoneSidebars_Root(as_Widget(d)->root); |
779 | setOpenedFromSidebar_DocumentWidget(document_App(), iTrue); | ||
776 | break; | 780 | break; |
777 | } | 781 | } |
778 | case feeds_SidebarMode: { | 782 | case feeds_SidebarMode: { |
@@ -783,7 +787,7 @@ static void itemClicked_SidebarWidget_(iSidebarWidget *d, iSidebarItem *item, si | |||
783 | case bookmarks_SidebarMode: | 787 | case bookmarks_SidebarMode: |
784 | case history_SidebarMode: { | 788 | case history_SidebarMode: { |
785 | if (!isEmpty_String(&item->url)) { | 789 | if (!isEmpty_String(&item->url)) { |
786 | postCommandf_Root(get_Root(), "open newtab:%d url:%s", | 790 | postCommandf_Root(get_Root(), "open fromsidebar:1 newtab:%d url:%s", |
787 | openTabMode_Sym(modState_Keys()), | 791 | openTabMode_Sym(modState_Keys()), |
788 | cstr_String(&item->url)); | 792 | cstr_String(&item->url)); |
789 | } | 793 | } |
@@ -799,7 +803,7 @@ static void itemClicked_SidebarWidget_(iSidebarWidget *d, iSidebarItem *item, si | |||
799 | updateContextMenu_SidebarWidget_(d); | 803 | updateContextMenu_SidebarWidget_(d); |
800 | arrange_Widget(d->menu); | 804 | arrange_Widget(d->menu); |
801 | openMenu_Widget(d->menu, | 805 | openMenu_Widget(d->menu, |
802 | d->side == left_SideBarSide | 806 | d->side == left_SidebarSide |
803 | ? topRight_Rect(itemRect_ListWidget(d->list, itemIndex)) | 807 | ? topRight_Rect(itemRect_ListWidget(d->list, itemIndex)) |
804 | : addX_I2(topLeft_Rect(itemRect_ListWidget(d->list, itemIndex)), | 808 | : addX_I2(topLeft_Rect(itemRect_ListWidget(d->list, itemIndex)), |
805 | -width_Widget(d->menu))); | 809 | -width_Widget(d->menu))); |
@@ -857,7 +861,7 @@ void setWidth_SidebarWidget(iSidebarWidget *d, float widthAsGaps) { | |||
857 | if (!isFixedWidth) { | 861 | if (!isFixedWidth) { |
858 | /* Even less space if the other sidebar is visible, too. */ | 862 | /* Even less space if the other sidebar is visible, too. */ |
859 | const int otherWidth = | 863 | const int otherWidth = |
860 | width_Widget(findWidget_App(d->side == left_SideBarSide ? "sidebar2" : "sidebar")); | 864 | width_Widget(findWidget_App(d->side == left_SidebarSide ? "sidebar2" : "sidebar")); |
861 | width = iClamp(width, 30 * gap_UI, size_Root(w->root).x - 50 * gap_UI - otherWidth); | 865 | width = iClamp(width, 30 * gap_UI, size_Root(w->root).x - 50 * gap_UI - otherWidth); |
862 | } | 866 | } |
863 | d->widthAsGaps = (float) width / (float) gap_UI; | 867 | d->widthAsGaps = (float) width / (float) gap_UI; |
@@ -938,33 +942,39 @@ static iBool handleSidebarCommand_SidebarWidget_(iSidebarWidget *d, const char * | |||
938 | } | 942 | } |
939 | const iBool isAnimated = prefs_App()->uiAnimations && | 943 | const iBool isAnimated = prefs_App()->uiAnimations && |
940 | argLabel_Command(cmd, "noanim") == 0 && | 944 | argLabel_Command(cmd, "noanim") == 0 && |
941 | (deviceType_App() != phone_AppDeviceType); | 945 | (d->side == left_SidebarSide || deviceType_App() != phone_AppDeviceType); |
942 | int visX = 0; | 946 | int visX = 0; |
943 | if (isVisible_Widget(w)) { | 947 | if (isVisible_Widget(w)) { |
944 | visX = left_Rect(bounds_Widget(w)) - left_Rect(w->root->widget->rect); | 948 | visX = left_Rect(bounds_Widget(w)) - left_Rect(w->root->widget->rect); |
945 | } | 949 | } |
946 | setFlags_Widget(w, hidden_WidgetFlag, isVisible_Widget(w)); | 950 | setFlags_Widget(w, hidden_WidgetFlag, isVisible_Widget(w)); |
951 | /* Safe area inset for mobile. */ | ||
952 | const int safePad = (d->side == left_SidebarSide ? left_Rect(safeRect_Root(w->root)) : 0); | ||
947 | if (isVisible_Widget(w)) { | 953 | if (isVisible_Widget(w)) { |
948 | setFlags_Widget(w, keepOnTop_WidgetFlag, iFalse); | 954 | setFlags_Widget(w, keepOnTop_WidgetFlag, iFalse); |
949 | w->rect.size.x = d->widthAsGaps * gap_UI; | 955 | w->rect.size.x = d->widthAsGaps * gap_UI; |
950 | invalidate_ListWidget(d->list); | 956 | invalidate_ListWidget(d->list); |
951 | if (isAnimated) { | 957 | if (isAnimated) { |
952 | setFlags_Widget(w, horizontalOffset_WidgetFlag, iTrue); | 958 | setFlags_Widget(w, horizontalOffset_WidgetFlag, iTrue); |
953 | setVisualOffset_Widget(w, (d->side == left_SideBarSide ? -1 : 1) * w->rect.size.x, 0, 0); | 959 | setVisualOffset_Widget( |
960 | w, (d->side == left_SidebarSide ? -1 : 1) * (w->rect.size.x + safePad), 0, 0); | ||
954 | setVisualOffset_Widget(w, 0, 300, easeOut_AnimFlag | softer_AnimFlag); | 961 | setVisualOffset_Widget(w, 0, 300, easeOut_AnimFlag | softer_AnimFlag); |
955 | } | 962 | } |
956 | } | 963 | } |
957 | else if (isAnimated) { | 964 | else if (isAnimated) { |
958 | setFlags_Widget(w, horizontalOffset_WidgetFlag, iTrue); | 965 | setFlags_Widget(w, horizontalOffset_WidgetFlag, iTrue); |
959 | if (d->side == right_SideBarSide) { | 966 | if (d->side == right_SidebarSide) { |
960 | setVisualOffset_Widget(w, visX, 0, 0); | 967 | setVisualOffset_Widget(w, visX, 0, 0); |
961 | setVisualOffset_Widget(w, visX + w->rect.size.x, 300, easeOut_AnimFlag | softer_AnimFlag); | 968 | setVisualOffset_Widget( |
969 | w, visX + w->rect.size.x + safePad, 300, easeOut_AnimFlag | softer_AnimFlag); | ||
962 | } | 970 | } |
963 | else { | 971 | else { |
964 | setFlags_Widget(w, keepOnTop_WidgetFlag, iTrue); | 972 | setFlags_Widget(w, keepOnTop_WidgetFlag, iTrue); |
965 | setVisualOffset_Widget(w, -w->rect.size.x, 300, easeOut_AnimFlag | softer_AnimFlag); | 973 | setVisualOffset_Widget( |
974 | w, -w->rect.size.x - safePad, 300, easeOut_AnimFlag | softer_AnimFlag); | ||
966 | } | 975 | } |
967 | } | 976 | } |
977 | updateToolbarColors_Root(w->root); | ||
968 | arrange_Widget(w->parent); | 978 | arrange_Widget(w->parent); |
969 | /* BUG: Rearranging because the arrange above didn't fully resolve the height. */ | 979 | /* BUG: Rearranging because the arrange above didn't fully resolve the height. */ |
970 | arrange_Widget(w); | 980 | arrange_Widget(w); |
@@ -984,11 +994,21 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) | |||
984 | /* Handle commands. */ | 994 | /* Handle commands. */ |
985 | if (isResize_UserEvent(ev)) { | 995 | if (isResize_UserEvent(ev)) { |
986 | checkModeButtonLayout_SidebarWidget_(d); | 996 | checkModeButtonLayout_SidebarWidget_(d); |
987 | if (deviceType_App() == phone_AppDeviceType && d->side == left_SideBarSide) { | 997 | if (deviceType_App() == phone_AppDeviceType && d->side == left_SidebarSide) { |
998 | setFlags_Widget(w, rightEdgeDraggable_WidgetFlag, isPortrait_App()); | ||
988 | /* In landscape, visibility of the toolbar is controlled separately. */ | 999 | /* In landscape, visibility of the toolbar is controlled separately. */ |
989 | if (isVisible_Widget(w)) { | 1000 | if (isVisible_Widget(w)) { |
990 | postCommand_Widget(w, "sidebar.toggle"); | 1001 | postCommand_Widget(w, "sidebar.toggle"); |
991 | } | 1002 | } |
1003 | setFlags_Widget(findChild_Widget(w, "buttons"), | ||
1004 | drawBackgroundToHorizontalSafeArea_WidgetFlag, | ||
1005 | isLandscape_App()); | ||
1006 | setFlags_Widget(findChild_Widget(w, "actions"), | ||
1007 | drawBackgroundToHorizontalSafeArea_WidgetFlag, | ||
1008 | isLandscape_App()); | ||
1009 | setFlags_Widget(as_Widget(d->list), | ||
1010 | drawBackgroundToHorizontalSafeArea_WidgetFlag, | ||
1011 | isLandscape_App()); | ||
992 | return iFalse; | 1012 | return iFalse; |
993 | } | 1013 | } |
994 | } | 1014 | } |
@@ -1029,6 +1049,11 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) | |||
1029 | postCommandf_App("sidebar.mode arg:%d toggle:1", identities_SidebarMode); | 1049 | postCommandf_App("sidebar.mode arg:%d toggle:1", identities_SidebarMode); |
1030 | return iTrue; | 1050 | return iTrue; |
1031 | } | 1051 | } |
1052 | else if (isPortraitPhone_App() && isVisible_Widget(w) && d->side == left_SidebarSide && | ||
1053 | equal_Command(cmd, "swipe.forward")) { | ||
1054 | postCommand_App("sidebar.toggle"); | ||
1055 | return iTrue; | ||
1056 | } | ||
1032 | else if (startsWith_CStr(cmd, cstr_String(&d->cmdPrefix))) { | 1057 | else if (startsWith_CStr(cmd, cstr_String(&d->cmdPrefix))) { |
1033 | if (handleSidebarCommand_SidebarWidget_(d, cmd + size_String(&d->cmdPrefix))) { | 1058 | if (handleSidebarCommand_SidebarWidget_(d, cmd + size_String(&d->cmdPrefix))) { |
1034 | return iTrue; | 1059 | return iTrue; |
@@ -1059,7 +1084,7 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) | |||
1059 | const int resMid = d->resizer->rect.size.x / 2; | 1084 | const int resMid = d->resizer->rect.size.x / 2; |
1060 | setWidth_SidebarWidget( | 1085 | setWidth_SidebarWidget( |
1061 | d, | 1086 | d, |
1062 | ((d->side == left_SideBarSide | 1087 | ((d->side == left_SidebarSide |
1063 | ? inner.x | 1088 | ? inner.x |
1064 | : (right_Rect(rect_Root(w->root)) - coord_Command(cmd).x)) + | 1089 | : (right_Rect(rect_Root(w->root)) - coord_Command(cmd).x)) + |
1065 | resMid) / (float) gap_UI); | 1090 | resMid) / (float) gap_UI); |
@@ -1528,15 +1553,17 @@ static void draw_SidebarWidget_(const iSidebarWidget *d) { | |||
1528 | const iRect bounds = bounds_Widget(w); | 1553 | const iRect bounds = bounds_Widget(w); |
1529 | iPaint p; | 1554 | iPaint p; |
1530 | init_Paint(&p); | 1555 | init_Paint(&p); |
1531 | if (flags_Widget(w) & visualOffset_WidgetFlag && | 1556 | if (deviceType_App() != phone_AppDeviceType) { |
1532 | flags_Widget(w) & horizontalOffset_WidgetFlag && isVisible_Widget(w)) { | 1557 | if (flags_Widget(w) & visualOffset_WidgetFlag && |
1533 | fillRect_Paint(&p, boundsWithoutVisualOffset_Widget(w), tmBackground_ColorId); | 1558 | flags_Widget(w) & horizontalOffset_WidgetFlag && isVisible_Widget(w)) { |
1559 | fillRect_Paint(&p, boundsWithoutVisualOffset_Widget(w), tmBackground_ColorId); | ||
1560 | } | ||
1534 | } | 1561 | } |
1535 | draw_Widget(w); | 1562 | draw_Widget(w); |
1536 | if (isVisible_Widget(w)) { | 1563 | if (isVisible_Widget(w)) { |
1537 | drawVLine_Paint( | 1564 | drawVLine_Paint( |
1538 | &p, | 1565 | &p, |
1539 | addX_I2(d->side == left_SideBarSide ? topRight_Rect(bounds) : topLeft_Rect(bounds), -1), | 1566 | addX_I2(d->side == left_SidebarSide ? topRight_Rect(bounds) : topLeft_Rect(bounds), -1), |
1540 | height_Rect(bounds), | 1567 | height_Rect(bounds), |
1541 | uiSeparator_ColorId); | 1568 | uiSeparator_ColorId); |
1542 | } | 1569 | } |
@@ -1782,13 +1809,7 @@ static void draw_SidebarItem_(const iSidebarItem *d, iPaint *p, iRect itemRect, | |||
1782 | : uiTextFramelessHover_ColorId) | 1809 | : uiTextFramelessHover_ColorId) |
1783 | : uiTextDim_ColorId; | 1810 | : uiTextDim_ColorId; |
1784 | if (!d->listItem.isSelected && !isUsedOnDomain) { | 1811 | if (!d->listItem.isSelected && !isUsedOnDomain) { |
1785 | /* Draw an outline of the icon. */ | 1812 | drawOutline_Text(font, cPos, metaFg, none_ColorId, range_String(&icon)); |
1786 | for (int off = 0; off < 4; ++off) { | ||
1787 | drawRange_Text(font, | ||
1788 | add_I2(cPos, init_I2(off % 2 == 0 ? -1 : 1, off / 2 == 0 ? -1 : 1)), | ||
1789 | metaFg, | ||
1790 | range_String(&icon)); | ||
1791 | } | ||
1792 | } | 1813 | } |
1793 | drawRange_Text(font, | 1814 | drawRange_Text(font, |
1794 | cPos, | 1815 | cPos, |