From 2bdc79c28ef4969a3ff27a843385fe704b35fc35 Mon Sep 17 00:00:00 2001 From: jevenski <26022962+jevenski@users.noreply.github.com> Date: Tue, 29 Oct 2024 12:03:29 +0800 Subject: [PATCH 1/2] Adjust top navbar styles and behaviors - Fix a sizing issue in MaterialDesign theme. - Restore original navbar styles (background image and color), and unify styles of navbar items. The new implementation tries to resemble the old look of ruTorrent, while utilizing CSS variables. This philosophy helps remove code duplication. Some background images are also replaced by CSS gradient. - Auto close collapsible top navbar when resizing and/or opening a dialog window. This adds slightly to ease of use, and prevent styling issues when switching between different screen resolutions. --- css/style.css | 61 ++++++++++-------- js/objects.js | 3 +- js/webui.js | 2 + plugins/theme/themes/Acid/style.css | 29 +++------ plugins/theme/themes/Blue/style.css | 27 +++----- plugins/theme/themes/Dark/style.css | 28 +++----- plugins/theme/themes/DarkBetter/style.css | 28 +++----- plugins/theme/themes/Excel/style.css | 14 ++-- .../images/ajax-loader-small.gif | Bin 12578 -> 10542 bytes plugins/theme/themes/MaterialDesign/style.css | 48 ++++---------- plugins/theme/themes/Oblivion/style.css | 30 ++++----- 11 files changed, 109 insertions(+), 161 deletions(-) diff --git a/css/style.css b/css/style.css index ebfef0d7c..50cacad95 100644 --- a/css/style.css +++ b/css/style.css @@ -104,6 +104,15 @@ span { --header-border-color: #909090; --dialog-bg-color: #FAFAFA; --dialog-border-color: #909090; + + --navbar-height: 36px; + --navbar-bg-color: #f0f0f0; + --navbar-bg-image: url(/images/t_bg.png); + --navbar-border-color: #d0d0d0; + --navbar-item-bg-color: #f0f0f0; + --navbar-item-border-color: #a0a0a0; + --loading-indicator-icon: url(/images/ajax-loader.gif); + --loading-indicator-side-length: 32px; } .dropdown-menu { --bs-dropdown-border-color: var(--menu-border-color); @@ -212,9 +221,12 @@ span.htkey {text-align:right; position: absolute; right: 16px; z-index:100} #sel {width: 0px; height: 0px; left: 0px; top: 0px; border: 1px dotted #000000; display: none; z-index: 1000} #t { - height: 36px; - background: #F0F0F0 url(../images/t_bg.png) repeat-x center 0.25rem; - border-bottom: 1px solid #D0D0D0; + height: var(--navbar-height); + background: var(--navbar-bg-image); + background-color: var(--navbar-bg-color); + background-position: center; + background-repeat: repeat-x; + border-bottom: 1px solid var(--navbar-border-color); margin-bottom: 5px; white-space: nowrap; } @@ -224,9 +236,9 @@ span.htkey {text-align:right; position: absolute; right: 16px; z-index:100} align-items: center; justify-content: space-between; } -#top-menu { - background-color: #F0F0F0; - border-bottom: 1px solid #D0D0D0; +#top-menu.show, #top-menu.collapsing { + background-color: var(--menu-background-color); + border-bottom: 1px solid var(--navbar-border-color); z-index: 30; } #top-menu .btn-group { @@ -257,11 +269,10 @@ span.htkey {text-align:right; position: absolute; right: 16px; z-index:100} width: 16px; height: 16px; } -div#t a {padding: 3px;} -#t .navbar-nav a:not(.dropdown-item):hover { +#t .nav-link:hover { filter: brightness(1.3); } -#t .nav-link:active {padding: 4px 2px 2px 4px;} +#t .nav-link:active {padding: 0.35rem 0.15rem 0.15rem 0.35rem;} div#t div.TB_Separator { align-self: stretch; flex: 0 0 1px; @@ -270,16 +281,16 @@ div#t div.TB_Separator { border: 0; background-color: #A0A0A0; } -div#t .nav-link { +#t .nav-link { display: flex; flex-direction: row; align-items: center; gap: 0.5rem; font-weight: bold; - border: 1px solid #A0A0A0; + border: 1px solid var(--navbar-item-border-color); border-radius: 8px; - background-color: var(--btn-bg-color); - background-image: none; + background: var(--navbar-item-bg-color); + padding: 0.25rem; margin: 0.15rem; } div.navbar-nav div.nav-icon { @@ -306,16 +317,16 @@ div#plugins {background: url(../images/plugin.png) 0px center} #go {background: url(../images/go.gif) 0px center; } #ind { - background: transparent url(../images/ajax-loader.gif) no-repeat 0px center; - width: 32px; - height: 32px; - cursor: default; + background: transparent var(--loading-indicator-icon) no-repeat center; + background-size: var(--loading-indicator-side-length); + width: var(--loading-indicator-side-length); + height: var(--loading-indicator-side-length); } #pview_save_view_button { align-self: center; width: 38px; height: 19px; padding: 0px; line-height: 2px; font-size: 19px; } a {color: #686868; text-decoration: none;} -#maincont {height: calc(100dvh - 36px - 5px - 25px - 5px);} +#maincont {height: calc(100dvh - var(--navbar-height) - 5px - 25px - 5px);} .offcanvas-header .btn-close {background-color: var(--btn-bg-color);} #offcanvas-sidepanel { border: 1px solid var(--container-border-color); @@ -632,19 +643,13 @@ div#tadd {max-width: 95vw;} /* Medium devices (tablets, 768px and up) */ @media (min-width: 768px) { /* Custom rules for medium devices */ - #top-menu { - background-color: transparent; - border-bottom: none; - z-index: auto; - } - #t .navbar-nav a:not(.dropdown-item):hover { + #t .nav-link:hover { background: transparent url(../images/tb_bg.gif) no-repeat scroll left center; filter: none; } - div#t .nav-link { - border: none; - border-radius: 0; - background-color: transparent; + #t .nav-link { + border: transparent; + background: transparent; } div#HDivider {cursor: e-resize;} div#VDivider {cursor: n-resize;} diff --git a/js/objects.js b/js/objects.js index 4b07d627c..ac5a7b32e 100644 --- a/js/objects.js +++ b/js/objects.js @@ -210,6 +210,8 @@ var theDialogManager = { if ($(window).width() < 768) { bootstrap.Offcanvas.getOrCreateInstance(document.querySelector("#offcanvas-sidepanel")).hide(); } + // close collapsible top menu on opening dialog windows + bootstrap.Collapse.getOrCreateInstance("#top-menu").hide(); const obj = $('#' + id); if (obj.data("modal")) @@ -456,4 +458,3 @@ var theContextMenu = return(false); } } - diff --git a/js/webui.js b/js/webui.js index 48cc2f45f..0866471f4 100644 --- a/js/webui.js +++ b/js/webui.js @@ -2306,6 +2306,8 @@ var theWebUI = theWebUI.resizeTop(null, h); // center any open dialog theDialogManager.visible.forEach(id => theDialogManager.center(id)); + // close collapsible top menu + bootstrap.Collapse.getOrCreateInstance("#top-menu").hide(); }, update: function() diff --git a/plugins/theme/themes/Acid/style.css b/plugins/theme/themes/Acid/style.css index e90115f5b..f0251bd4d 100644 --- a/plugins/theme/themes/Acid/style.css +++ b/plugins/theme/themes/Acid/style.css @@ -18,6 +18,15 @@ html, body { background-color: #1e2124; color: #BDDBDB } --header-border-color: #909090; --dialog-bg-color: #1E2124; --dialog-border-color: #909090; + + --navbar-height: 36px; + --navbar-bg-color: #252525; + --navbar-bg-image: url(/plugins/theme/themes/Acid/images/t_bg.png); + --navbar-border-color: #d0d0d0; + --navbar-item-bg-color: #1e2124; + --navbar-item-border-color: #d0d0d0; + --loading-indicator-icon: url(/plugins/theme/themes/Acid/images/ajax-loader.gif); + --loading-indicator-side-length: 32px; } category-panel { --open-background-image: url(../plugins/theme/themes/Acid/images/pnl_open.gif); @@ -76,16 +85,8 @@ div.graph_tab {background-color: #272E36; color: #BDDBDB; font-weight: bold;} .graph_tab_legend { color: #FFF; background-color: #272E36; } .graph_tab_tooltip { color: #FFF; background-color: #272E36; border: 1px solid #BDDBDB; } -#t {background: #252525 url(./images/t_bg.png) repeat-x center center; border-bottom: 1px solid #252525;} -#top-menu { - background-color: #252525; - border-bottom: 1px solid #252525; -} -div#t .nav-link { - background-color: #1E2124; - border-color: #D0D0D0; +#t .nav-link { color: #00FF00; - font-weight: bold; } div#t div#add {background: transparent url(./images/toolbar.png) no-repeat -24px center} div#t div#create {background: transparent url(./images/toolbar.png) no-repeat -48px center} @@ -166,8 +167,6 @@ div#gcont div.row.Header {background: #323A46;} #dlgProps-header {background-image: url(./images/props.gif);} #yesnoDlg-header {background-image: url(./images/error.gif);} -div#t div#ind { background: transparent url(./images/ajax-loader.gif) no-repeat 0px center; } - span#loadimg { background: transparent url(./images/ajax-loader.gif) no-repeat center center; } .Icon_File {background: transparent url(./images/file.gif) no-repeat left center} @@ -180,11 +179,3 @@ span#loadimg { background: transparent url(./images/ajax-loader.gif) no-repeat c .sthdr { color: #00FF00;} .stval { color: #BDDBDB;} - -@media (min-width: 768px) { - /* Custom rules for medium devices */ - div#t .nav-link { - background-color: transparent; - border: none; - } -} diff --git a/plugins/theme/themes/Blue/style.css b/plugins/theme/themes/Blue/style.css index fcbeadf03..45287f5c2 100644 --- a/plugins/theme/themes/Blue/style.css +++ b/plugins/theme/themes/Blue/style.css @@ -18,6 +18,15 @@ html, body { background-color: #DFE8F6 } --header-border-color: transparent; --dialog-bg-color: #FAFAFA; --dialog-border-color: #909090; + + --navbar-height: 36px; + --navbar-bg-color: #181818; + --navbar-bg-image: url(/plugins/theme/themes/Blue/images/header_bg.gif); + --navbar-border-color: #333333; + --navbar-item-bg-color: linear-gradient(0deg, rgba(180,207,240,1) 0%, rgba(222,236,253,1) 100%); + --navbar-item-border-color: #8db2e3; + --loading-indicator-icon: url(/plugins/theme/themes/Blue/images/ajax-loader.gif); + --loading-indicator-side-length: 32px; } category-panel { --open-background-image: url(../plugins/theme/themes/Blue/images/pnl_open.gif); @@ -44,14 +53,7 @@ panel-label[selected] { border-color: #D9E8FB; } -#t {background: #181818 url(./images/header_bg.gif) repeat-x center center; border-bottom: 1px solid #333333;} -#top-menu { - background-color: #181818; - border-bottom: 1px solid #333333; -} -div#t .nav-link { - background-image: url(./images/tabs-bg.png); - border-color: #8DB2E3; +#t .nav-link { color: #15428B; font-weight: normal; } @@ -100,12 +102,3 @@ ul.CMenu li.menuitem hr {background-color: #E0E0E0; color: #000000; border-botto div#stg .lm { background-color: #FAFAFA; border: 1px solid #D0D0D0; } .lm li a.focus {background-color: #D9E8FB} - -div#t div#ind {background: transparent url(./images/ajax-loader.gif) no-repeat 0px center;} - -@media (min-width: 768px) { - /* Custom rules for medium devices */ - div#t .nav-link { - background-image: none; - } -} diff --git a/plugins/theme/themes/Dark/style.css b/plugins/theme/themes/Dark/style.css index 1d840b45f..454374f36 100644 --- a/plugins/theme/themes/Dark/style.css +++ b/plugins/theme/themes/Dark/style.css @@ -18,6 +18,15 @@ html, body {background-color: #181818; color: #999999; } --header-border-color: #333333; --dialog-bg-color: #181818; --dialog-border-color: #333333; + + --navbar-height: 36px; + --navbar-bg-color: #181818; + --navbar-bg-image: url(/plugins/theme/themes/Dark/images/t_bg.png); + --navbar-border-color: #333333; + --navbar-item-bg-color: #333333; + --navbar-item-border-color: #333333; + --loading-indicator-icon: url(/plugins/theme/themes/Dark/images/ajax-loader.gif); + --loading-indicator-side-length: 32px; } category-panel { --open-background-image: url(../plugins/theme/themes/Dark/images/pnl_open.gif); @@ -75,18 +84,11 @@ ul.CMenu li a.sel {background: transparent url(./images/menusel.gif) no-repeat s #sel {border: 1px dotted #555555;} -#t {background: #181818 url(./images/t_bg.png) repeat-x center center; border-bottom: 1px solid #333333;} -#top-menu { - background-color: #181818; - border-bottom: 1px solid #333333; -} .navbar-toggler { background-image: none; border-color: #333333; } -div#t .nav-link { - background-color: #333333; - border-color: #333333; +#t .nav-link { color: #686868; } div#t div.TB_Separator {background-color: #333333} @@ -171,19 +173,9 @@ div#dlgProps textarea#prop-trackers {background: #181818; border: 1px solid #333 div.tab {background-color: #181818} -div#t div#ind {background: transparent url(./images/ajax-loader.gif) no-repeat 0px center;} - span#loadimg {background: transparent url(./images/ajax-loader.gif) no-repeat center center; } #StatusBar { border-top: 1px solid #333333; background-color: #181818; color: #888888 } #st_up { background:url(./images/status_up.gif) 6px no-repeat; } #st_down { background:url(./images/status_down.gif) 6px no-repeat; } .statuscell {border-right: 1px solid #333333;} - -@media (min-width: 768px) { - /* Custom rules for medium devices */ - div#t .nav-link { - background-color: transparent; - border: none; - } -} diff --git a/plugins/theme/themes/DarkBetter/style.css b/plugins/theme/themes/DarkBetter/style.css index 53ad4e859..59fb8ef42 100644 --- a/plugins/theme/themes/DarkBetter/style.css +++ b/plugins/theme/themes/DarkBetter/style.css @@ -18,6 +18,15 @@ html, body {background-color: #181818; color: #999999; } --header-border-color: #333333; --dialog-bg-color: #181818; --dialog-border-color: #333333; + + --navbar-height: 36px; + --navbar-bg-color: #181818; + --navbar-bg-image: url(/plugins/theme/themes/DarkBetter/images/t_bg.png); + --navbar-border-color: #333333; + --navbar-item-bg-color: #181818; + --navbar-item-border-color: #333333; + --loading-indicator-icon: url(/plugins/theme/themes/DarkBetter/images/ajax-loader.gif); + --loading-indicator-side-length: 28px; } category-panel { --open-background-image: url(../plugins/theme/themes/DarkBetter/images/pnl_open.svg); @@ -207,18 +216,11 @@ ul.CMenu li ul li a.dis:hover {background-color: #181818; color: #333333} #sel {border: 1px dotted #555555} -#t {background: #181818 url(./images/t_bg.png) repeat-x center center; border-bottom: 1px solid #333333;} -#top-menu { - background-color: #181818; - border-bottom: 1px solid #333333; -} .navbar-toggler { background-image: none; border-color: #333333; } -div#t .nav-link { - background-color: #181818; - border-color: #333333; +#t .nav-link { color: #686868; } div#t div.TB_Separator {background-color: #333333} @@ -329,8 +331,6 @@ div#dlgProps textarea#prop-trackers {background: #181818; border: 1px solid #333 div.tab {background-color: #181818} -div#t div#ind {background: transparent url(./images/ajax-loader.gif) no-repeat 0px center; background-size: 28px} - span#loadimg {background: transparent url(./images/ajax-loader.gif) no-repeat center center; background-size: 28px} #StatusBar {border-top: 1px solid #333333; background-color: #181818; color: #888888} @@ -350,11 +350,3 @@ span#loadimg {background: transparent url(./images/ajax-loader.gif) no-repeat ce #dlgLabel-header {background-image: url(./images/label.svg);} #dlgProps-header {background-image: url(./images/file.svg);} #yesnoDlg-header {background-image: url(./images/yellow.svg);} - -@media (min-width: 768px) { - /* Custom rules for medium devices */ - div#t .nav-link { - background-color: transparent; - border: none; - } -} diff --git a/plugins/theme/themes/Excel/style.css b/plugins/theme/themes/Excel/style.css index 3b955d35b..b848eb129 100644 --- a/plugins/theme/themes/Excel/style.css +++ b/plugins/theme/themes/Excel/style.css @@ -18,6 +18,15 @@ html, body { background-color: #DFE8F6; scrollbar-arrow-color: #586585; scrollba --header-border-color: #FFFFFF; --dialog-bg-color: #D9E8FB; --dialog-border-color: #FFFFFF; + + --navbar-height: 36px; + --navbar-bg-color: transparent; + --navbar-bg-image: url(/images/t_bg.png); + --navbar-border-color: transparent; + --navbar-item-bg-color: #f0f0f0; + --navbar-item-border-color: #a0a0a0; + --loading-indicator-icon: url(/images/ajax-loader.gif); + --loading-indicator-side-length: 32px; } category-panel { --open-background-image: none; @@ -46,11 +55,6 @@ panel-label[selected] { #StatusBar { background: transparent url(./images/statbg.png) repeat-x 0 0; border-top: none; color: #034084 } .statuscell { border-color: #9EB6CE } -#t {background: none; border: none;} -#top-menu { - background-color: #B5D5FB; - border-bottom: 1px solid #9EB6CE; -} .navbar-toggler { background-image: none; } diff --git a/plugins/theme/themes/MaterialDesign/images/ajax-loader-small.gif b/plugins/theme/themes/MaterialDesign/images/ajax-loader-small.gif index bd1f6af0aa6359c7f3f5779e1b98f57c96fcae9c..5c62b8713f0263c929d10c1600d76702d7a41f1f 100644 GIT binary patch literal 10542 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 UnShmY-)bEHxw!b3U0j6z7d`aiP5=M^ literal 12578 zcmeI&Ygm(Kwm0x6M?w-H2}wu-#3Y=O5Mly|h_n-ufQXR-d7?<7hJzRt89+p9Y2|zp z6ci8@Eg(`vTG4{yVY&lFYt=ev(W+GkmA2N?ptZGichBtg5Zjq|cH8N@KX1P1mvCLW ze*D+E*J94xnDAMt5=4URLl8EXUAwu~kYYK1;k+U&viER*R$l(Y#}9p#p{;vbBV!Et zZF|F7DYs4|B?Qzg2IPSpZNxdM#dR_{M(NiE3>>Lz9)xA z6v2^WS8jB6^%j#J0Ap0vQ_T5=}}?M}EYrS0q~z>#;{Ez72CWMeNfj+1%cDPVyh!PboK? zw~ZfS;G-hN5$YTPKR+mVJ(-wKBp2I)(~Z+|ru*dUdDC;I8TmGrYP*r+;vy^4v;Ac* z?Hxu{mtc)HNMW0PFk`1o(corN^NyoFo8{W0GV(|U*`|o;Qa5~(6j03a^0tYuWQc7l zl1=g#6mRpT%LFxFB@x#t*9j+4;iE3Xb0eYmKVQuK;j?iK^$mP=-|W88q+!0#{RZjt zoC?I~Yt28vQ>Y!BW&Q7-% z@eYhX6Ufg}H+AQI5k~pcw7tZYWbu-&wUeqziT8-O|M_2C4yA?S0Tl2AdZ3(uDKtXw zs67aS>Vh`#q);lrjUmneJ{;`86Tkuupa(zzAi$KhG7CHbEPx2+z#^yuHvkCm0j9`^ zNDvA5K-k2W6F?1MDU_k$3CNy5dmdE%PE6p1{5K6yX~ex6RGD;b<(tTN?pWB z(gspp66tltT0PrO;j+DD$Lro~9gkb8?p$22;8q0VOKHpAOOnw_CE5cD_hXCQOS!>5 zuhZWDFcCS)@$x8TezKTZN@A4;UNO>3DI$e;?X5(rw?cWJ|CNzH@jBtJNhL1de49vU zCo3MmsHzQ7siHMv*>&-FK?1onl0r>bRaF;_bLAu}Xx}TwD13X_*MZ!5Rg`7qzj%+I z8s1Jf_1+)aI-{)QINA5Y3Q6Vt+J%0rX3v@%H6r)xVynYQEqMVKOPtSlBC+} z*tHFZhP!JC^d;z{(fv%4wK_tJG4vXx={)0K5t&E(@oMIZw!m}^8lkjdt z0qK{hK#BiBCC&g&KuhSWFR4JG9ZvLGJyf>$yHfgE!X3M=1&1rpeV&O3GY8GSowakB9> zc%CNQH+Ik;Pev1@bdvPzZ*{jxfA@N}_cr28zUTnpIM|tu05vpM@ObG1@LZ z@Q6&6N+`_KtO`w@Jg@y~^j);aG+`+>bU80|&L-D3$kQa86awLFUe|Ew7dp8qfH|uu zl^$IrNAO;|8;0(%5oa`F;Ov@D72JTW_ZQi<56B&_r#*`}o_e|n7ZU6Brs=*rf@AKy zu=|{*0(oy6B{}(ahy5g8$;iKY#-H*F!Sb^f_`!#40V-$`3TB|AfEg$yXaN|GUIiY0 z?mEB&v;Y--i~;;)WM%*rP~?adsCz$rHVJi@v7}f!yE=glXh9dCzy{11;!%i{eE6Qt zjlc#(ffLM(7PAUkEKA^1|0ZNW%dVW*{)V*aI=ycVZ;3hywD|Mp`OiPM%(utHDwSQ2 zF}%G+c7mhs98Xmo-nWAsgfK;iTKbvZxnbN4|D~nQ8_irRcM*R>sTSd9s8O|n*|IHq zjd{1ucV1}69{tXO9IedE?>04u%5=^K|E-6jk&TinVX#}(38OR5M;Jz6%LS*bL^+$l zk;@sQCdOwZ>SxUBDD5+$NbcEtXRoK+B|t8EfPUraDkpwpyyW`)hZp+qy{nw+V+kB5 zS7Cj^Xhm6pD6(kP;P{?O{AY(b6I~seip-GwcL^$8c_}VTX?X*g92%f$EtXwFIg2-K zm0J>$_II4lKIuGt?VoI4wUrIxpNE~4mfYD{iXW|CqKonynZfZ{8NW5*?w%UNgb)WK z?iQbsA&l`KH#Dy}u|pxT4O~paZ5r_Gj^8l!&HV~Kk#fFho#|BhzHWpvI6jb*>f}M} z{}!E(t0nxGt9{arTh=Q2EkO=GP(ueFC}UQ37F5y^IRFRiPE+v!STHG5e83$Luq?>{ zP-UQRfyE&RtN|+rA82%-1NfZ3GzNlzl|vA8!mR9k$Q}@cjXjxJzy}yw(lP)J^e8|C zihnzGUJ81}dLVXqYpi}jUm^&SDCcd8-uEbYdezDq`Cr?%Ur085JR?9URx_J(<``xm zxoAjqzqhk0FU;S`MDHny7Tem|JC^6_mT?99 zP20F0I!Y#U`=MwbW@c)bM~du(NtQC;*2p}Sw$XV`{U?W0VhuAsMQ3CNO8L&4uIUjj zpYQ1!atHMd3UCb~JTQg?xlTU)Mo;*T95n4kmBN;4Z7X)d)n$GEPFwUQjx*nG)Ywx? z%UrxzMe24^UCte3v~S^1g;S;Xv$Z+*qN*tCLm4$R_2Kd=LxA~Aa%J(dRfBk%cjK8D zbfIw3q?)3zwFQrcaV({1$cataaK<)w;&1TDfat-7 zn>YhR50n%TfgKp4p@4=3XyJy!-uL>U+O;*cP*n#dAOn=jYHC3Q^d~?B5Xvgb02e68 zFUUuiSU?##0*nx3g>MxCqSmQF3LHTL18V@&u)yLNm2TXc07t+L_<%SViGVZK-j-y5 zrbsO|fd7jo7=m}_#NIf?3;CRkzjigVHW~O72QoQE1zq?Lk9WbQ)Z$b1}?qX=;XPqL{D1; zfDE3wx^yc3fN2NSP3N8A($o(b#8^7}(2NgEGnOf1w)%c#9h#Hj^k>t|43CgylFO(h zBgAF?pKj{>=EX5wzCd~N4Z?>;VK(>4Q@xPE?R@aP&X=8~ib6gr+c-P!WbExW5}oJ6 z5Uy{r+CSt_7DjrF;)u1B>IqyGqSF?8i-pQx};mM%aK1l7JCZ^x^%700=w*6kr6ZKmz~*C7m7EbOVxr3pN)=U@WErWDGRG zyyK7os$fKdoB>9*OJkQ#yM~gMN{hMnah+r> z<-t9aGTks;`Pk^bMCSf&^z-SD{!=GhRP_8#>ulx$M%yGg;dEtgps3SMp2Qzrz8=Bb zjE`C>nY(ZJg||h$UCU8uW4p(*i^~{dA_dom%cQQOT2CiuEYsysxW0B~?6IM%47O^~ z!=x~_KUE%Nt%x1UL(ADR9kClPDngx^>+|MMvNCCh(1h>HWVdmpJz8$Y`h>8Nig&ih zjnq@ul$PNLzAfXPl8TG-5aP(0xMVra1wVT0g=PpLyDO4g?A9V}u{P=#-m~RD&q5AE z5I<06C_nbPzW*>(tA~2Gc3@)3d%3Q9`HZ} z06}NM5@=5=L=-?ddHkd!dm!x~hkz*>T?meo~>-B8DugW47=OYyV%Nd3FIu8cPljMzxmwVxNpz0J-nLb2XrS3ARSFC|C+srtW?rxUX22`n9 zP8cQJssQbvzw%VN+Xpcz^lg8RmeiA|JTvRFbe1{RKprX2PgCRz4=$IcRtIj=dYulSwE*Jpe9A9&59i@Lc;Mbg8pQa zo>X-}rF?iCxht>ofLUmAXH?06tRi^5OU{uqM7NB<$kCp!qeue_U!l)fW-tEiB%e$_ zgFHV-SaSlQiKfFE=` z00yog=72~3TZMpj;?4vXLw|$sc@kIxPEhoFq-=JV!S9ouKA0G(!|1?@nCXtr{_`})0|`z$Pf9kQI@^InFJ8CNT}DOv`N-X&5O zEzayYoZ)G~#iTH{osager_C`3T+RqE$J$6YO|U8PBY1dEpx*QN^B9jzd_oR^^9;nilT$N6Q#x8TAufK#(ME%F?|hTN&oopqjqv=5UX`(1p^6_2^+=vVfIqS zQfbkny>@&ZRg5Hc3`W1^v6||(&0veV*z@`6Hx56{VO|azma+HO6!xymnthwM?MJ#0a^wXc~dUg%Hhy*aN0Cm{QN_nymbEf2vFg_I>H z@8F7~Ck!?z?vB0G$w`wD-q2`Z{Aw$Maze2ocOWAmDIg{wQ$Ps-0vS+Os5+1;+guAE zpz5%r0a#ccn|il{3@`*BM$Vpxcmfj;UH}Uifi~a>GyxDOgqdgL^m#}bh#n9Fp2{{i z!puH3M0fuG>H$eG5pB6QOzwY42~$QVmp!DEkq%A9pbh`K-idxh|0{~%g{|kK90Sv2$$!BaxH!V zyU~CYR+V0s%j$Zk+afH`A}ffv! zdqTbBQ#3?6Uaq}5HwU-5D7^LyiqzJ&Onap8#>qd$`rKX=wSw6FCq}`$Es+`K=0z)F ziiTGIVJXooW6glymBG!5EEj%s+epRU9(KYaab@u*@$ACf*At>I3K;=M=WcyplEtJ6 zKd|wl?#M|jpW|zz>^<&+S;Pd3Mx@bH)4a4riS5tEniS%2>5^U^3GWni{_Kk`yq3b2 zYBdSWea2q_1ic6VK?ng0C_jWy|8Z=jnL^VGVjvy>1h&F?{17H%fQ8Z7(+MvuFbAmv zAi&D`3uC}#;>(BFPz2ur_CqjP!605x2>l9(03C=WNVxw6lz&d0fBriF+LjX=>8GUP zZWoIvn(dH4ui#>wx}1t9vrg&{sxLTn*2J2`;KXU>RK)0w8Zal zrn}jxnXuS(*GVI5D}|svCKQ~`r2j{Zo6r^W<0^D>CYfEXWx6aOQ7v9~O|qbA*~OqTinELCz@i4%U3!ValQEq#S#9#cnNyikhI5ss`@ zd^J=Oxa#UNT+a7x@s&Y;rmvj56jh~iqxo;v9a**`qbbuJdGT}_!;e2{#^11 zy?W)jM{)lAg-z65`KI01tf~jC0e$L*ySFZ=N?3>V!{-ORz4DYyONc+Ql(f;zOhb7V z*@irwpUlETz053i6SNn3iCz^TcYV7JRlC}9waOr~tT(+y9<+sD(0J77S4-FS%SrZh zk~t{mV91t_jl_*C;WRVuQaaA8rkH&{H{s1v7hCn+PqU|IiyxT8wu6KxC}ID%&y7FK zmrs7rj9OkaKK(7fTkVv9gsP&2(zJ|Kv3qyb@Pz#u_cM345M-z8pP0MmQA(FP9d-U( zd%i|(evfF*j;!W8V3F3*|sPqgxXyR~S@rFY>A0I=)CF z8pfB@?k`RrQgxLKlMoMK@wPnXDC+uBhwM#Y0;R==CBHgoFn1seuY|2mO&K*k$N z=beb@Q`Mg}A{*I!u9C$_I^z+o&Sh0#4erMoQ}0q>}#hk80-Ao)=TszKgUCcrMId+P~oFvYYcfRy)o6w@)g_ z5XU4O`YLv_gad>_i30~f!E)wRtkO_s$1wt+01-d~0Rj(oND_zXMaHP!NDZ73GPzQ&7AuYG$5Zp|*HqP)Nch%?zt>899lra zaS+Ph5rhcR91x7mbS_f6htJ4RFpLoqn0~U~ul@Lz3(p#}rTFe|v=kKhTaB zIJ6%qGaL^<1}Fh8fWy&#;7S3B0;Hhi@S_i#W``K4H zh%N5)JpD9xix`!gxnRZL5Lluo1O)!Wiqh=;|zaa;D zQEN`@h-t~zPls-YxB4E8%Z)pQBhqSCLBwz|Hp%&mTg~k`cUwJ5)rY>kbt{w3c%oi; zW6)~`#%3njH_ul%#U{kUcgxd@_?8fKhM7&o*eHRGREe=6PDPBu%m+3~g@cV-ok}~P z6b_{e&5D@5nZU+(BU?S)5ivxT*$0al7GsKy`0+!NSSjrzJwZthHeRnj3k?3Ny~2gs z`7MFbK2po%Dz5URBNa|GpS0x3wql8^fSDedU`;Lg$XUonFJwv)s2Cs*3`SIjLhr2{~v~ zWo^^MFaBP|Pb)v{`T$|#zypN_KaSG_mOKkk#|#QL2v{CF6#aa6011w}!&DG;LYIQ- z|9pA?fnd*ZcYv7~lk?Nj!Lj=TWAH=+IgT3_gd4B{PCyYnW1S3){nFjxr$NRJc+N9( zXfz2cDw!J&{pk~2?2gv}&s)L1nx?pO`R0H*?c?FQL;5j15ovOd#5~Qc!GI||u4KrZ zz$rXxO9(4ZuMDxM0nao-GwNpuD$$2hf|!7Zz{L7fusH8I&ZGl6Dyx?z%=X##(4)5I8sBJ*T~KQe_go-(|@MZKLF$nz(G zmvH!U7iS?|k>oQ}A^4sZbY88!RZ2#p4CiwR+7b^svf=7IoK;A5)@K#g7nSVcAj_WY z#iMRfXlCi7E>$*x0PEp-&w=PHDg35s&paYDc{8$VX6vDLPI6VL$5CcgB zwVzrNk2p>bkP(hW4>UFiCQyh?OmLfkqr;V#cTae;Lra5rg4_Wdpai&p9(ajkJ z1x50pdR4)OqbReEt0nq+ur9wrgk6bq4Z>j=r`j4BuZw8R* zoa%eVX&gHF8TpCn(KDs{4=9fpt1G_!mqzECkNJwje=eeVOmg3%BpmcAT|-N6N&d*? z)X{S8>F5L7)fMF84V3(IeJb6|1(M?{s;VA;IM+i`(VbDRcsspp`}R(C5z|dOb9Hn$ z#fzF<9_pcg=j6T9+qxvq$^_MVb!LyDxjDT5)3YX5ry6>Kt#7pW%Su;ny#K^#+)#WE zC)Cf!PLa}22XxplpSG<9UhUSwUp z5L@5}>;WWbaxm*SX#E~Szy^L*r`Mz)W38)&-VCklT^x~)rO$?BjEyzlEc?tl9=Cf@ zxjOgDTgR7l)72pxjt$B}Fg8kO-%{q38o4D99^Cvu%XE~dkO_%RXn=vmiw-8U*(K1r z2yAh%4w3itzKe2u$`{zB+9T}Hk#wJvGbr9{!Ild~-;dN3&mQL0bY>6U zORdhmjk>AXULTP^ydUkm-|xF`ObqpYHSPy=N%zX-&&8``}AkZP7Gscp`O2jT!dD)Lt|JS^$-(+uHv?voN$}8s4H@GxJ zB~C=*9z~p&l(g?o%@I~68S=KbSbqU2CtChqr;>yB3I*3j<`4_*| z!~W^uFan(n@&}T~v8IFO0k0n*1SQ61l&OOQ92p!p2Z$F39)R)l%>j-HKnu+L^VtCu zL0G{+1K|To0STaWv@WG$W)%g1=GwCmjMC*c+Y8^Qk zKA99ybXE-EL#AGq?sl$Ft3&6m_EcAt+rAzVnBAn}JcJ~L3CDR_d60{&nv{lCuJU;! zPsjDCqOno&Dq7G^I615;(|ftE+Sm0?m3x2=!BzPjO82S8HL6wx?l@tb7Fg}A#Z_}o zrE{uq!Blqwqw&wD8B!XRRqc5_eR?%ZxGMK9O0E+66L@tGPV=OK?-XO)=68wJ zqpRm@ilZg;rCAvGzrlv1>7CSSBO zsx}NMtG7xkocsIIT(aq6B&}m~;GhSUaVsO{2v^`O1{1Qpm*SdhY zCc5}Ix2qnZR3{{y;oe^wPbCkghz=E-JDd-M=GvR?Da$Ad(N*&{ihe8^i6ACl_qce~ z85hwP^xY=}Je|gqQKG#o_0}B#?m|g55C036vCS?zlKWg~1CHANc&wqXWQ! zy8}Rg;TfXkU+xZ59S@5%xH~`xgZ;51+rSju9RMSYKoEPspU*$q*NpJqGqL*w(aGE3 z;!uYZDTt>(d{i*gmC_cs_>gZ|zf&oL5^t`}c%0l&?Lkb@ioNA}j=&ecf<^IwlfxRK zH$hxO@FuRAmX6jEJ#j_rbR2pU%MJCg1xVjUrJhaI`asc|o&&vWL~wOjPQ)F_=wK;Y zlxx^~>_!fIjZ&*NHn)r!kw%J(6pmIIB%4&V#_3Cw(;5|(C~A0Y6u&Qf z@!Zt-K8yZrZ<^IrP)yj=X!mQ^4NGLcMG2ydw?1T0C>hBC?KeN#~i_Q$H5?_SNG?DqN<=*%N+{{mK&zq6PBc{|*lScX0UCgTw6q2FEDb Ab^rhX diff --git a/plugins/theme/themes/MaterialDesign/style.css b/plugins/theme/themes/MaterialDesign/style.css index 4cb1cafbe..26462264e 100644 --- a/plugins/theme/themes/MaterialDesign/style.css +++ b/plugins/theme/themes/MaterialDesign/style.css @@ -214,6 +214,15 @@ html,body --header-border-color: transparent; --dialog-bg-color: #222222; --dialog-border-color: #333333; + + --navbar-height: 40px; + --navbar-bg-color: #273238; + --navbar-bg-image: none; + --navbar-border-color: transparent; + --navbar-item-bg-color: #181818; + --navbar-item-border-color: transparent; + --loading-indicator-icon: url(/plugins/theme/themes/MaterialDesign/images/ajax-loader-small.gif); + --loading-indicator-side-length: 34px; } category-panel { --open-background-image: url(../plugins/theme/themes/MaterialDesign/images/pnl_open.png); @@ -452,43 +461,25 @@ ul.CMenu li ul li a.dis:hover border:1px dotted #555 } -#t { - background-color:#273238; - background-image:none; - border-bottom:none; - height: 40px; -} - -#top-menu { - background-color: #273238; - border-bottom: none; -} .navbar-toggler { background-image: none; border: none; } -div#t .nav-link { - background-color: #181818; - border: none; +#t .nav-link { color: #EEE; } -div#t a -{ - margin:4px 5px 0 0 -} - #mnu_logoff.top-menu-item { margin-left: 15px; } -div#t a:hover +#t .nav-link:hover { background: none; filter: brightness(1.2); } -div#t a:active +#t .nav-link:active { background: none; filter: brightness(1.3); @@ -1074,14 +1065,6 @@ div.tab background-color:#181818 } -div#t div#ind -{ - height:34px; - width:34px; - background:transparent url(./images/ajax-loader-small.gif) no-repeat 0 center; - margin:2px 6px -} - span#loadimg { background:transparent url(./images/ajax-loader.gif) no-repeat center center @@ -1266,10 +1249,3 @@ span.det { .stval { color: #FFF; } .tickLabel { color: #FFF; } .dlg-window legend { color: #FFF; } - -@media (min-width: 768px) { - /* Custom rules for medium devices */ - div#t .nav-link { - background-color: transparent; - } -} diff --git a/plugins/theme/themes/Oblivion/style.css b/plugins/theme/themes/Oblivion/style.css index 72a129c1b..30ddf0055 100644 --- a/plugins/theme/themes/Oblivion/style.css +++ b/plugins/theme/themes/Oblivion/style.css @@ -18,6 +18,15 @@ html, body {font-family: "Lucida Sans Unicode", "Lucida Grande", Tahoma, Arial, --header-border-color: #333333; --dialog-bg-color: #222222; --dialog-border-color: #333333; + + --navbar-height: 36px; + --navbar-bg-color: #181818; + --navbar-bg-image: linear-gradient(0deg, rgba(24,24,24,1) 0%, rgba(33,33,33,1) 100%); + --navbar-border-color: transparent; + --navbar-item-bg-color: linear-gradient(0deg, rgba(17,17,17,1) 0%, rgba(46,46,46,1) 100%); + --navbar-item-border-color: #0f0f0f; + --loading-indicator-icon: url(/plugins/theme/themes/Oblivion/images/ajax-loader.gif); + --loading-indicator-side-length: 32px; } category-panel { --open-background-image: url(../plugins/theme/themes/Oblivion/images/pnl_open.png); @@ -131,22 +140,15 @@ ul.CMenu li:hover ul li a:hover { text-shadow:0px -1px 0px #000;} #sel {border: 1px dotted #555555;} -#t {background: #000 url(./images/headers.png) repeat-x 0px -252px; border-bottom: none;} -#top-menu { - background-color: #000; - border-bottom: none; -} .navbar-toggler { background-image: none; border-color: #0F0F0F; } -div#t .nav-link { - background: #000 url(./images/headers.png) repeat-x 0px 0px; - border-color: #0F0F0F; +#t .nav-link { color: #626262; font-weight: bold; } -div#t a:hover {background: none;} +#t .nav-link:hover {background: none;} div#t div.TB_Separator {border-right:1px solid #262626;background-color: #000;height:35px;margin:0px 0px 0px 5px} div#t div#add {background: transparent url(./images/toolbar.png) no-repeat 0px 0px} div#t div#add:hover {background: transparent url(./images/toolbar.png) no-repeat px -24px} @@ -295,8 +297,6 @@ div#stg .lm {background-color: #181818; border: 1px solid #333333} div.tab {background-color: #181818} -div#t div#ind {background: transparent url(./images/ajax-loader.gif) no-repeat 0px center;} - span#loadimg {background: transparent url(./images/ajax-loader.gif) no-repeat center center; } /*Scrollbars*/ @@ -365,11 +365,3 @@ span.det {color:#fff;} height: 0; display: none; } - -@media (min-width: 768px) { - /* Custom rules for medium devices */ - div#t .nav-link { - background: none; - border: none; - } -} From 101efef0b3d5d45b2643734c7e0a48c9dfa0b60d Mon Sep 17 00:00:00 2001 From: jevenski <26022962+jevenski@users.noreply.github.com> Date: Thu, 21 Nov 2024 17:12:29 +0800 Subject: [PATCH 2/2] Fix image path and collapse menu blink --- css/style.css | 4 ++-- js/objects.js | 10 +++++----- js/webui.js | 6 ++++-- plugins/theme/themes/Acid/style.css | 4 ++-- plugins/theme/themes/Blue/style.css | 4 ++-- plugins/theme/themes/Dark/style.css | 4 ++-- plugins/theme/themes/DarkBetter/style.css | 4 ++-- plugins/theme/themes/Excel/style.css | 4 ++-- plugins/theme/themes/MaterialDesign/style.css | 2 +- plugins/theme/themes/Oblivion/style.css | 2 +- 10 files changed, 23 insertions(+), 21 deletions(-) diff --git a/css/style.css b/css/style.css index 50cacad95..8abc02777 100644 --- a/css/style.css +++ b/css/style.css @@ -107,11 +107,11 @@ span { --navbar-height: 36px; --navbar-bg-color: #f0f0f0; - --navbar-bg-image: url(/images/t_bg.png); + --navbar-bg-image: url(../images/t_bg.png); --navbar-border-color: #d0d0d0; --navbar-item-bg-color: #f0f0f0; --navbar-item-border-color: #a0a0a0; - --loading-indicator-icon: url(/images/ajax-loader.gif); + --loading-indicator-icon: url(../images/ajax-loader.gif); --loading-indicator-side-length: 32px; } .dropdown-menu { diff --git a/js/objects.js b/js/objects.js index ac5a7b32e..df1993d10 100644 --- a/js/objects.js +++ b/js/objects.js @@ -204,14 +204,14 @@ var theDialogManager = { this.modalState = false; }, show: function(id, callback) { - // Close side panel on mobile: - // An offcanvas is a modal under the hood and will intercept focus events - // from other elements, and make other text inputs unfocusable and uneditable. if ($(window).width() < 768) { + // Close side panel on mobile: + // An offcanvas is a modal under the hood and will intercept focus events + // from other elements, and make other text inputs unfocusable and uneditable. bootstrap.Offcanvas.getOrCreateInstance(document.querySelector("#offcanvas-sidepanel")).hide(); + // close collapsible top menu on opening dialog windows + bootstrap.Collapse.getOrCreateInstance("#top-menu").hide(); } - // close collapsible top menu on opening dialog windows - bootstrap.Collapse.getOrCreateInstance("#top-menu").hide(); const obj = $('#' + id); if (obj.data("modal")) diff --git a/js/webui.js b/js/webui.js index 0866471f4..42c349197 100644 --- a/js/webui.js +++ b/js/webui.js @@ -2306,8 +2306,10 @@ var theWebUI = theWebUI.resizeTop(null, h); // center any open dialog theDialogManager.visible.forEach(id => theDialogManager.center(id)); - // close collapsible top menu - bootstrap.Collapse.getOrCreateInstance("#top-menu").hide(); + if ($(window).width < 768) { + // close collapsible top menu + bootstrap.Collapse.getOrCreateInstance("#top-menu").hide(); + } }, update: function() diff --git a/plugins/theme/themes/Acid/style.css b/plugins/theme/themes/Acid/style.css index f0251bd4d..84cc137e5 100644 --- a/plugins/theme/themes/Acid/style.css +++ b/plugins/theme/themes/Acid/style.css @@ -21,11 +21,11 @@ html, body { background-color: #1e2124; color: #BDDBDB } --navbar-height: 36px; --navbar-bg-color: #252525; - --navbar-bg-image: url(/plugins/theme/themes/Acid/images/t_bg.png); + --navbar-bg-image: url(../plugins/theme/themes/Acid/images/t_bg.png); --navbar-border-color: #d0d0d0; --navbar-item-bg-color: #1e2124; --navbar-item-border-color: #d0d0d0; - --loading-indicator-icon: url(/plugins/theme/themes/Acid/images/ajax-loader.gif); + --loading-indicator-icon: url(../plugins/theme/themes/Acid/images/ajax-loader.gif); --loading-indicator-side-length: 32px; } category-panel { diff --git a/plugins/theme/themes/Blue/style.css b/plugins/theme/themes/Blue/style.css index 45287f5c2..d742e7319 100644 --- a/plugins/theme/themes/Blue/style.css +++ b/plugins/theme/themes/Blue/style.css @@ -21,11 +21,11 @@ html, body { background-color: #DFE8F6 } --navbar-height: 36px; --navbar-bg-color: #181818; - --navbar-bg-image: url(/plugins/theme/themes/Blue/images/header_bg.gif); + --navbar-bg-image: url(../plugins/theme/themes/Blue/images/header_bg.gif); --navbar-border-color: #333333; --navbar-item-bg-color: linear-gradient(0deg, rgba(180,207,240,1) 0%, rgba(222,236,253,1) 100%); --navbar-item-border-color: #8db2e3; - --loading-indicator-icon: url(/plugins/theme/themes/Blue/images/ajax-loader.gif); + --loading-indicator-icon: url(../plugins/theme/themes/Blue/images/ajax-loader.gif); --loading-indicator-side-length: 32px; } category-panel { diff --git a/plugins/theme/themes/Dark/style.css b/plugins/theme/themes/Dark/style.css index 454374f36..cde806fe0 100644 --- a/plugins/theme/themes/Dark/style.css +++ b/plugins/theme/themes/Dark/style.css @@ -21,11 +21,11 @@ html, body {background-color: #181818; color: #999999; } --navbar-height: 36px; --navbar-bg-color: #181818; - --navbar-bg-image: url(/plugins/theme/themes/Dark/images/t_bg.png); + --navbar-bg-image: url(../plugins/theme/themes/Dark/images/t_bg.png); --navbar-border-color: #333333; --navbar-item-bg-color: #333333; --navbar-item-border-color: #333333; - --loading-indicator-icon: url(/plugins/theme/themes/Dark/images/ajax-loader.gif); + --loading-indicator-icon: url(../plugins/theme/themes/Dark/images/ajax-loader.gif); --loading-indicator-side-length: 32px; } category-panel { diff --git a/plugins/theme/themes/DarkBetter/style.css b/plugins/theme/themes/DarkBetter/style.css index 59fb8ef42..0254ecd0c 100644 --- a/plugins/theme/themes/DarkBetter/style.css +++ b/plugins/theme/themes/DarkBetter/style.css @@ -21,11 +21,11 @@ html, body {background-color: #181818; color: #999999; } --navbar-height: 36px; --navbar-bg-color: #181818; - --navbar-bg-image: url(/plugins/theme/themes/DarkBetter/images/t_bg.png); + --navbar-bg-image: url(../plugins/theme/themes/DarkBetter/images/t_bg.png); --navbar-border-color: #333333; --navbar-item-bg-color: #181818; --navbar-item-border-color: #333333; - --loading-indicator-icon: url(/plugins/theme/themes/DarkBetter/images/ajax-loader.gif); + --loading-indicator-icon: url(../plugins/theme/themes/DarkBetter/images/ajax-loader.gif); --loading-indicator-side-length: 28px; } category-panel { diff --git a/plugins/theme/themes/Excel/style.css b/plugins/theme/themes/Excel/style.css index b848eb129..fc93053ab 100644 --- a/plugins/theme/themes/Excel/style.css +++ b/plugins/theme/themes/Excel/style.css @@ -21,11 +21,11 @@ html, body { background-color: #DFE8F6; scrollbar-arrow-color: #586585; scrollba --navbar-height: 36px; --navbar-bg-color: transparent; - --navbar-bg-image: url(/images/t_bg.png); + --navbar-bg-image: url(../images/t_bg.png); --navbar-border-color: transparent; --navbar-item-bg-color: #f0f0f0; --navbar-item-border-color: #a0a0a0; - --loading-indicator-icon: url(/images/ajax-loader.gif); + --loading-indicator-icon: url(../images/ajax-loader.gif); --loading-indicator-side-length: 32px; } category-panel { diff --git a/plugins/theme/themes/MaterialDesign/style.css b/plugins/theme/themes/MaterialDesign/style.css index 26462264e..bb24b6ea5 100644 --- a/plugins/theme/themes/MaterialDesign/style.css +++ b/plugins/theme/themes/MaterialDesign/style.css @@ -221,7 +221,7 @@ html,body --navbar-border-color: transparent; --navbar-item-bg-color: #181818; --navbar-item-border-color: transparent; - --loading-indicator-icon: url(/plugins/theme/themes/MaterialDesign/images/ajax-loader-small.gif); + --loading-indicator-icon: url(../plugins/theme/themes/MaterialDesign/images/ajax-loader-small.gif); --loading-indicator-side-length: 34px; } category-panel { diff --git a/plugins/theme/themes/Oblivion/style.css b/plugins/theme/themes/Oblivion/style.css index 30ddf0055..044fdf77c 100644 --- a/plugins/theme/themes/Oblivion/style.css +++ b/plugins/theme/themes/Oblivion/style.css @@ -25,7 +25,7 @@ html, body {font-family: "Lucida Sans Unicode", "Lucida Grande", Tahoma, Arial, --navbar-border-color: transparent; --navbar-item-bg-color: linear-gradient(0deg, rgba(17,17,17,1) 0%, rgba(46,46,46,1) 100%); --navbar-item-border-color: #0f0f0f; - --loading-indicator-icon: url(/plugins/theme/themes/Oblivion/images/ajax-loader.gif); + --loading-indicator-icon: url(../plugins/theme/themes/Oblivion/images/ajax-loader.gif); --loading-indicator-side-length: 32px; } category-panel {