Aris-t2 / CustomCSSforFx

Custom CSS tweaks for Firefox
GNU General Public License v3.0
1.87k stars 181 forks source link

[Firefox 64-72] 'Classic autocomplete popup with two-lined results' does not work anymore! Use provided CSS or JS alternatives. // New code works with megabar in Fx73+ #161

Closed Aris-t2 closed 4 years ago

Aris-t2 commented 6 years ago

I don't know, if there is a workaround or fix yet, so if you know something, be my guest and share any info regarding the possibility of restoring this xml-based feature on Firefox 64+.

An alternative CSS-version based on my older CustomCSSforFx v1.0.0 code was added to recent builds to restore a to the location bar attached autocomplete popup with two-lined results. Its width does not get detected automatically anymore, so it has to be set within /config/ files.

See @import "./css/locationbar/ac_popup_classic_with_two_lines_fx65.css"; btw. @import "./css/locationbar/ac_popup_classic_with_two_lines_fx64.css"; respectively in 2.3.2 update.

There is also a custom JavaScript script, that uses the above CSS code and additionally adjusts popup width with location bars width. The function monitors main windows node "sizemode (normal/maximized/fullscreen)" for that. https://github.com/Aris-t2/CustomJSforFx/blob/master/scripts/locationbar_popup_classic_with_two_lined_results.uc.js

MarkRH commented 5 years ago

Just happened to notice this. When using the ac_popup_classic_with_two_lines_fx64.css option, the drop-down doesn't seem to capture the keyword searches. Normally, you type a keyword and it shows what search engine it will be: image With, this, it seems to ignore it: image

Not sure if this is a limitation that can be worked around or not with the 2 line version.

Aris-t2 commented 5 years ago

You are right. Please edit this line and remove the keyword part of the rule:

https://github.com/Aris-t2/CustomCSSforFx/blob/master/classic/css/locationbar/ac_popup_classic_with_two_lines_fx64.css#L21

MarkRH commented 5 years ago

That seems to have worked. Thanks!

Aris-t2 commented 5 years ago

I will fix this on next update too.

Thalon77 commented 5 years ago

May I ask a thing related to the new autocomplete behavior? I managed to restore something similar to the old behavior but one thing is missing: I see only 10 results popping up when I digit something, I need to raise their number to 12 like it was in the good old days. Any idea on how to accomplish that?

MarkRH commented 5 years ago

@Thalon77 In about:config change browser.urlbar.maxRichResults to the value you want. Default is 10. Depending how large a number you use, probably see a scrollbar.

motfis commented 5 years ago

I think this still broken. in incognito window, if i activate any ac_popup options, if we search for something, then it will give 10 "results" from bookmark that is NOT related to the something that we are looking for. In the previous version, if there is no match related to something, then the popup will be only 1 line : 'search by google'

Aris-t2 commented 5 years ago

@motfis Make sure to perform a restart after setting a different value.

Just tested with "30" on current Nightly and the amount was correct (I counted all items ;-)). Unfortunately you have to use the scrollbar to go through all items.

3

motfis commented 5 years ago

Hi, I am totally aware to restart after changing value. Maybe i wasn't clear. Here is my problem screenshot 374 screenshot 374 b

so, with ac_popup options on, FF will always gives search results, even if it shouldn't.

Aris-t2 commented 5 years ago

Not sure, if this is the case for you too, but try what I mentioned a few posts above ( https://github.com/Aris-t2/CustomCSSforFx/issues/161#issuecomment-447054667 ).


Tbh I have no idea why this is happening for you. For me its like this:

default 111

_ac_popup_classic_with_two_linesfx64.css 222

Change

/* Hide "Visit/Search" items */
#PopupAutoCompleteRichResult[autocompleteinput="urlbar"] richlistitem:first-of-type:-moz-any([type*="heuristic"],[actiontype="searchengine"],[actiontype="visiturl"],[actiontype="keyword"]),
#PopupAutoCompleteRichResult[autocompleteinput="urlbar"] richlistitem[anonid="type-icon-spacer"] {
  display: none !important;
}

to

#PopupAutoCompleteRichResult[autocompleteinput="urlbar"] richlistitem[anonid="type-icon-spacer"] {
  display: none !important;
}

I also made this change in 2.3.3.

motfis commented 5 years ago

This fix the problem. Thanks!

kilara1988 commented 5 years ago

Hi.I am really glad that the two lined results option could be revived after the changes in Firefox that were made. However i think i have a bug with it and i am not sure if i should report it here or in a separate issue thread so let me know if i should open a new issue about it.

I am using Firefox 65 Beta 4, Win 10 x64 1809, CSS 2.3.3

Before the Firefox changes, when you typed an url that had no matches in history it would show some matches for the first few letters obviously, but then the dropdown results list would reduce to 0 results when no matches were found.

In the current implementation when no matches are found the list just keeps the last matched results state.

Also i can't figure out how to install the script to match the dropdown list width to my location bar width in tampermonkey.Any hints would be appreciated.

Aris-t2 commented 5 years ago

In 2.3.3 the default ac_popup_classic_with_two_lines_fx64.css does not add or remove any menuitems from results list anymore compared to the default popup. Maybe there was a change in Fx65 in general, I have not checked the mentioned behavior.

I can not offer any info or support for Tampermonkey regarding my scripts. Everything one needs to know can be found here https://github.com/Aris-t2/CustomJSforFx

kilara1988 commented 5 years ago

Oh.I thought i was supposed to use that script with Tampermonkey(or similar alternatives).Will try following those directions.

kilara1988 commented 5 years ago

I'm sorry if i am being a bother, but i can't make the script work even after following the method 2 instructions. Maybe i am missing something or misinterpreting it. Here is what i did:

1. I downloaded the project to my desktop and extracted it.

2. I copied the userChrome folder and userChrome.js file to my chrome folder in my profile. My profile folder now has the following structure: chrome/userChrome/userChromeJS.js chrome/userChrome/userChromeJSutilities.js chrome/userChrome.js

3. Then i copied the defaults folder and config.jc file to my Firefox main folder(in C:\Program Files\Mozilla Firefox).

4. Then i copied the locationbar_popup_classic_with_two_lined_results.uc.js file to the chrome/userChrome folder.So the folder structure now looks like this: chrome/userChrome/locationbar_popup_classic_with_two_lined_results.uc.js chrome/userChrome/userChromeJS.js chrome/userChrome/userChromeJSutilities.js chrome/userChrome.js

5. Then i edited the chrome/userChrome.js file and changed it from // userChrome.js userChrome.ignoreCache = true; userChrome.import("/userChrome/my_script_name.uc.js", "UChrm"); // userChrome.import("/userChrome/my_other_script_name.uc.js", "UChrm"); to // userChrome.js userChrome.ignoreCache = true; userChrome.import("/userChrome/locationbar_popup_classic_with_two_lined_results.uc.js", "UChrm"); // userChrome.import("/userChrome/my_other_script_name.uc.js", "UChrm");

I figured that the line i changed in 5. imports the specified script file from the userChrome folder so i put the correct name of the script file and put the script file in that folder. I also tried to disable the .css option if it was interfering, but still no luck. What am i missing?

Aris-t2 commented 5 years ago

Looks right to me. Have you also done this: https://github.com/Aris-t2/CustomJSforFx#scriptstartup-cache-must-be-deleted-after-every-change

kilara1988 commented 5 years ago

I deleted my startupCache folder and now it works. I thought i didn't have to do that since a pref in the userChrome.js file was supposed to be doing it automatically now. I guess i was wrong about that. Thanks for the help.

Aris-t2 commented 5 years ago

It should work, but does not always.

MarkRH commented 5 years ago

How do you control the width of that drop-down? I'm helping someone with a Windows 10 system. With the same chrome files loading (I have a profile that matches his), the drop-down is much wider on his system. Seems to be partially related to browser width. Would OS scaling cause it to be wider than what I see on my end? This is a screen capture of his window at full-screen. It goes all the way to the right. Doesn't do that on my end. image

Aris-t2 commented 5 years ago

@MarkRH

(if complete package is used) https://github.com/Aris-t2/CustomCSSforFx/blob/master/classic/config/general_variables.css#L47

_(if only ac_popup_classic_with_two_linesfx64.css is used) https://github.com/Aris-t2/CustomCSSforFx/blob/master/classic/css/locationbar/ac_popup_classic_with_two_lines_fx64.css#L9

Width has to be set manually in both cases. Only the JS solution adjusts popup width automatically based on location bar width.

AndersOhrt commented 5 years ago

I'm not sure if what I'm seeing is expected, but I'm using 2.3.4 with Firefox 64, and ac_popup_classic_with_two_lines_fx64.css and I'm always shown search matches even when what I search for is not in the history.

It's easily reproducible, just search for "github" and when you see all 10 results, add junk to the search bar to make the search "githubzzzzzzz" for example. The 10 results are still shown.

It looks like the problem Motfis reported, but I cannot see how the change for 2.3.4 would help this case.

Aris-t2 commented 5 years ago

Sorry, I have no idea why this happens for some users and not for others.

Aris-t2 commented 5 years ago

@AndersOhrt This is what happens here during similar tests.

(ac_popup_classic_with_two_lines_fx64.css) 1

(ac_popup_classic_with_two_lines_fx64.css + ac_popup_searchwith_and_visit_items_hidden.css)

2

AndersOhrt commented 5 years ago

I've found the reason, it's the ac_popup_searchwith_and_visit_items_hidden.css. If I comment it out, it works as expected.

albino1 commented 5 years ago

@MarkRH

(if complete package is used) https://github.com/Aris-t2/CustomCSSforFx/blob/master/classic/config/general_variables.css#L47

_(if only ac_popup_classic_with_two_linesfx64.css is used) https://github.com/Aris-t2/CustomCSSforFx/blob/master/classic/css/locationbar/ac_popup_classic_with_two_lines_fx64.css#L9

Width has to be set manually in both cases. Only the JS solution adjusts popup width automatically based on location bar width.

Is there any way to change the width of the search box without using ac_popup_classic? On a 4K monitor it's like absurdly wide considering you only need like 25% of it :)

I tried just adding Line 47 under :root to my general_variables.css and setting it to 200 just to see if it work, but nothing changed.

Aris-t2 commented 5 years ago

The search box is a different popup and not part of this discussion. If you actually mean location bars popup, then just look through the code were the variables are used, take and move the code to userChrome.css and set own values.

If you are really looking for search bars popup, you need to use "#PopupSearchAutoComplete" rule.

albino1 commented 5 years ago

You're right, I'm sorry, I don't use the search box and so I misinterpreted the above screenshots to be talking about searching within the location bar. If I have any more problems I'll post them in the General Discussion thread. Thanks!

p1nkyy commented 5 years ago

Width has to be set manually in both cases. Only the JS solution adjusts popup width automatically based on location bar width.

Hello, how to set width manually? Is it this one: /* popup content order/appearance - [only use one at a time] ****/ @import "./css/locationbar/ac_popup_url_and_title_50percent_width.css"; /**/

Aris-t2 commented 5 years ago

@p1nkyy https://github.com/Aris-t2/CustomCSSforFx/issues/161#issuecomment-448768083

p1nkyy commented 5 years ago

@p1nkyy #161 (comment)

I already have that in the original general_variables.css only it said for fx65 instead, but still the width doesn't work. How to use it exactly? I copied & paste everything in that link to my general_variables.css. Is that how I'm supposed to do it?

Aris-t2 commented 5 years ago

The "65" is just a wrong comment, which will get replaced by 64 with next update.

If you are using the complete CustomCSSforFx package, you can set the values inside general_variables.css.

p1nkyy commented 5 years ago

Yes but what number is good for the width?

Aris-t2 commented 5 years ago

The numbers are different for each configuration. If you find out the width of your location bar in normal, maximized and fullscreen modes, you can set them as "good/optimal" values.

p1nkyy commented 5 years ago

@Aris-t2 I can't seem to make them work. I give up now. For confirmation, all I need to do is add the *Classic/old popup with two lined results' option in my userChrome.css and then change the number in config\general_variables.css, that's it?

Aris-t2 commented 5 years ago

If you are using the full release from releases area, then you have to set the values inside config\general_variables.css file. If you are using just the code from ac_popup_classic_with_two_lines_fx64.css inside your own custom userChrome.css, then modify the code there. I'm not sure there is a way to explain it differently.

p1nkyy commented 5 years ago

Hello, I copied & pasted the entire CustomCSS for Fx to my Chrome folder, but I don't use everything in the userChrome.css itself, I pick some that I need. So where does this count? Thanks for your patience, I'm so confused about this thing only lol.

I think this counts toward the second. Now do I modify my userChrome.css by adding those lines you refer to? Below the ac_popup_classic_with_two_lines_fx64.css command?

Aris-t2 commented 5 years ago

Lets go with this:

Hello, I copied & pasted the entire CustomCSS for Fx to my Chrome folder, but I don't use everything in the userChrome.css itself,

Edit the userChrome.css and add or remove '/*' in front of '@import' lines you need or don't need respectively. It is like an options window where you check or uncheck settings.

Do not create an own file, do not paste code somewhere into userChrome.css and do not remove any lines from userChrome.css. I believe doing this you always remove something, that is not supposed to be removed. This causes other code not to work.

Look at these examples how to properly enable and disable settings.

Note

If you add own code to ucerChrome.css, always add it at the bottom of the file. Never add it between already present '@import' lines. This will force Firefox to ignore '@import' lines after the code.

userChrome.css optionally offers an '@import' of a file called my_userChrome.css. You can put your own code there to not mess around with userChrome.css.

pintassilgo commented 5 years ago

People said that the popup is not removing previous entries when you type something without matches (or with matches < the maximum to display).

Aris said that he coudn't reproduce, that's because it's not ac_popup_classic_with_two_lines_fx64.css fault, but ac_popup_searchwith_and_visit_items_hidden.css. More specifically this code:

#PopupAutoCompleteRichResult[autocompleteinput="urlbar"] richlistitem:first-of-type:-moz-any([type*="heuristic"],[actiontype="searchengine"],[actiontype="visiturl"],[actiontype="keyword"],[actiontype="switchtab"]),
#PopupAutoCompleteRichResult[autocompleteinput="urlbar"] richlistitem:-moz-any([type*="heuristic"],[actiontype="searchengine"],[actiontype="visiturl"],[actiontype="keyword"],[actiontype="switchtab"]) {
  visibility: collapse !important;
}

I probably can hande this with JS, but there is no fix with pure CSS?

Edit: the best I got with pure CSS, hiding the first entry without the side effect of not removing previous entries when there is no match:

#PopupAutoCompleteRichResult richlistbox {
  margin-top: -36px !important;
}

#PopupAutoCompleteRichResult richlistitem:first-of-type {
  margin-bottom: 6px !important;
}

Note: values in px should be adjusted depending on each configuration.

With matches:

No matches:

Aris-t2 commented 5 years ago

I'm currently working on improving code withinac_popup_classic_with_two_lines_fx64.css ac_popup_searchwith_and_visit_items_hidden.css files. Maybe this will lead to better results for some users, but I can't promise much atm.

However the code snippet with ...visibility: collapse !important;... you pointed to in your post is not inside https://github.com/Aris-t2/CustomCSSforFx/blob/master/classic/css/locationbar/ac_popup_searchwith_and_visit_items_hidden.css

pintassilgo commented 5 years ago

That's because I removed the irrelevant part.

line 26 line 27 (ending with { instead of ,) line 34 line 38

Another thing that can help to remove previous entries is to set browser.urlbar.insertMethod = 0 (hidden pref).

yogthot commented 5 years ago
#PopupAutoCompleteRichResult > richlistbox > * {
    transition: min-height 1ms 0ms;
}

This rules fixes the height problem for me but I have no idea why. Hope it helps someone else.

I seriously hate the fact that they rely on transition events.

Edit: I'm using Firefox 65.

yogthot commented 5 years ago

In Firefox 66 the 1ms transition became too fast, but making it 100ms seems to work fine. I really don't understand what I'm dealing with here.

Aris-t2 commented 5 years ago

What happens, if you completely remove the transition?

#PopupAutoCompleteRichResult > richlistbox > * {
    transition: unset !important;
}
yogthot commented 5 years ago

Nothing at all, it still shows previous results. I don't think a transaction exists there to begin with.

And just for reference, this transaction fixes the problem until the next reboot, which actually caused a lot of trouble when I tried to isolate the element.

Aris-t2 commented 5 years ago

Looks like a transition delay can solve internal issues with value miscalculations sometimes. I don't like this either, but if it helps, it is better than nothing.

ryuukenzenkou commented 4 years ago

so.. does this still works on firefox 71+? because i had to give up on trying to fix the location bar results to make it look "good" and not let it use half of my screen.

Aris-t2 commented 4 years ago

The feature itself works up to current Nightly builds, but requires different options (and additional tweaks) depending on your configuration, Firefox version and options set in about:config.

The upcoming megabar seems to improve things and comes closer to what things used to be.

Edit You can already switch to megabar in Fx 72 by enabling about:config > browser.urlbar.update1 > true. "Megabar options" in userChrome.css work.

123

ryuukenzenkou commented 4 years ago

@aris-t2 well I already posted a screenshot of my Firefox setup and I'm still not sure about what I should switch ok the css code or what other tweak has to be made to achieve the same classic drop-down list from location bar. os: windows 7 pro x64 browser: Firefox release v72 css version: v3.0.0

Aris-t2 commented 4 years ago

This can be closed now. Megabars "popup" is very close to the old one.