Jump to content

Neutral General

Members
  • Content Count

    31
  • Joined

  • Last visited

Everything posted by Neutral General

  1. Neutral General

    IDE Fix pack for Rio

    Well yes.. but it's also sad that they couldn't (wouldn't?) fix those bugs for like a decade. And for a company selling a compiler + IDE I expect them to be able to fix such bugs themselves. And even if they didn't know how to do it themselves, why didn't they include the IDEFixpack earlier? The IDEFixpack existed for many years before they decided to include it. Now that they've included it, they only seem to have included very minor fixes, because you STILL need to install the 3rd party IDEFixpack for the IDE to be somewhat stable. So to be honest I'm not really that hopeful anymore. I'd really like for Emba to (positively) surprise me with 10.4, but I'm not getting my hopes up.
  2. Neutral General

    Rio quality disappoint

    For a while a colleague wrote his code in Notepad++ and copy&pasted it into the Delphi IDE, because Code Insight didn't do anything but randomly make the IDE unusable and unresponsive for up to 30 seconds. He literally couldn't do his work with 10.3. After installing the dev snapshot of the IDE Fixpack it's a lot better now and it's at least usable again. But it's still not acceptable that the IDE is in a state where some people are faster writing code in Notepad than in "RAD" (๐Ÿ˜‚) Studio without disabling themes and a lot of IDE Insight features and having to install a third party patch before being remotely usable. And the worst thing is: a lot of the performance and stability problems exist for nearly a decade at this point
  3. Hello, I've got an application which dynamically loads multiple DLLs from my project group. All those DLLs are exposing a small API they use to communicate with each other (and the exe). Debugging what happens inside a DLL isn't a problem. I can just attach the debugger to the process and it works. But what do I do if I'm in a debugging session in foo.dll with a break point on an API function calling code in bar.dll I would like to step into this function but I don't really know how I could do that. My first plan was to stop at a breakpoint on the call, detach the debugger, switch projects and reattach it to bar.dll so I can debug the inside of the call. But as soon as I detach the debugger, the process just continues execution. Does anyone know a good solution to this?
  4. Neutral General

    Debugging multiple DLLs simultaneously

    I've got an application (windows service) that (in the best case) shouldn't be shutdown ever. But there are going to be updates to the application. So in order to not have to shut down the whole service, the service is modular and can just temporary unload a DLL, update and then reload it. That's not really doable with a monolithic application.
  5. Neutral General

    Debugging multiple DLLs simultaneously

    Thanks! ๐Ÿ™‚ That's still not the holy grail but a lot better than a message box. ๐Ÿ‘
  6. Neutral General

    Debugging multiple DLLs simultaneously

    That's not the reply I was hoping for but I guess there's no better way to do it ๐Ÿ˜ž
  7. Neutral General

    Editing binary files in Delphi

    "Simple" is an understatement You can pretty much type any character you want wherever you want. It just throws an error if you want to save it and it isn't valid.
  8. Neutral General

    Strange thing in System.Generics.Defaults.pas

    Because 42 is the answer to the ultimate question of life, the universe and everything
  9. Hi, I'm trying to write an IDE plugin which extends the popup menu of a project. This is a rough overview of my code: TMyProjectMenuItemNotifier = class(TNotifierObject, IOTANotifier, IOTAProjectMenuItemCreatorNotifier) // ... TMyProjectMenuItem = class(TInterfacedObject, IOTANotifier, IOTALocalMenu, IOTAProjectManagerMenu) // ... { TMyProjectMenuItemNotifier } procedure TMyProjectMenuItemNotifier.Initialize; var manager: IOTAProjectManager; begin if Supports(BorlandIDEServices, IOTAProjectManager, manager) then FProjectNotifierId := manager.AddMenuItemCreatorNotifier(Self); end; procedure TMyProjectMenuItemNotifier.Finalize; var manager: IOTAProjectManager; begin if (FProjectNotifierId > -1) and (Supports(BorlandIDEServices, IOTAProjectManager, manager)) then manager.RemoveMenuItemCreatorNotifier(FProjectNotifierId); end; procedure TMyProjectMenuItemNotifier.AddMenu(const Project: IOTAProject; const IdentList: TStrings; const ProjectManagerMenuList: IInterfaceList; IsMultiSelect: Boolean); var item: TMyProjectMenuItem; begin item := TMyProjectMenuItem.Create(Project); item.Caption := 'Test123'; item.Enabled := true; item.Position := 0; ProjectManagerMenuList.Add(item); end; { TMyProjectMenuItem } procedure TMyProjectMenuItem.Execute(const MenuContextList: IInterfaceList); begin ShowMessage('Click!'); end; // Unit which creates and registers all the classes var projectItemNotifier: TMyProjectMenuItemNotifier; procedure Register; begin projectItemNotifier := TMyProjectMenuItemNotifier.Create; projectItemNotifier.Initialize; end; initialization finalization projectItemNotifier.Finalize; In general all this works well so far. There's just one problem: It seems like the TMyProjectMenuItem-Objects are not destroyed on closing the Popup-Menu but on opening the next one. This somehow ends in the following order of events. 1. Build MyPlugin.bpl => Success 2. Install MyPlugin.bpl => Success 3. Right click on my project a) TMyProjectMenuItem is created b) Popup menu shows and my menu item works as expected 4. I close the popup menu 5. I right click on my project (again) a) Prior TMyProjectMenuItem is destroyed b) New TMyProjectMenuItem is created 6. I choose "Uninstall" a) TMyProjectMenuItemNotifier.Finalize is called b) TMyProjectMenuItemNotifier is destroyed 7. I right click on my project (again!) 8. I right click on my project (one last time) => Success. The popup menu with the default items shows The TMyProjectMenuItem from my last click before the uninstall never gets destroyed and it seems like the IDE doesn't know the item is gone either and I get this access violation when the IDE tries to access (and destroy) the last TMyProjectMenuItem. And at this point I'm clueless. I don't know how I'm supposed to fix that. There is no Interface or Method to manually unregister/destroy the object so that the IDE knows it's gone. I'm using Delphi 10.0 Seattle on Windows 10
  10. Yes. I set a breakpoint and before that a ShowMessage in the destructor of the menu items. The old ones get destroyed if a new popup menu is created. I'll take a look at the link, thanks! :)
  11. I've tried using an interface for the menu item, but it didn't change anything and every code about this I found also always used object variables so I assumed that this would be okay. Currently my menu notifier also has some other functionality. Implementing the Notifier interface is just one thing it does. But maybe I should use a dedicated notifier object and include my main plugin logic in another class?
  12. Neutral General

    Chrome/TamperMonkey for Design

    I can't edit my post above so here's a fixed version: // ==UserScript== // @name [DPE] CSS Overrides // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @match https://en.delphipraxis.net/ // @match https://en.delphipraxis.net/?* // @match https://en.delphipraxis.net/topic/* // @match https://en.delphipraxis.net/discover/* // @grant none // ==/UserScript== (function() { try{ 'use strict'; // Header const enable_compact_banner = true; const enable_compact_searchbar = true; // thread overview const enable_compact_topic_banner = true; const enable_modified_topic_banner = true; const enable_compact_fluidlist = true; const enable_additional_highlight = true; // Threads/Posts const enable_small_userinfo = true; ๏ปฟ const enable_compact_comment = true; const enable_compact_comment_footer = true; const enable_compact_pre = true; const enable_compact_code = true; const enable_compact_survey = true; const enable_username_above_avatar = true; // Other const enable_goto_latest_post = true; const enable_scroll_to_content = true; const enable_compactDiscover = true; const isDiscover = location.href.indexOf('delphipraxis.net/discover') > 0; const $ = jQuery; const stylesheet = document.styleSheets[document.styleSheets.length - 1]; if (enable_compact_banner) { $('HEADER .logo').attr('style', 'height: auto;'); $('HEADER .logo IMG').attr('style', 'margin-bottom: -30px;'); } // fluid list if (enable_compact_fluidlist && !isDiscover) { $('LI.ipsDataItem').attr('style', 'padding: 2px 0'); $('DIV.ipsDataItem_icon').attr('style', 'padding: 0 10px;'); $('DIV.ipsDataItem_main').attr('style', 'padding: 0;'); $('UL.ipsDataItem_stats').attr('style', 'padding: 0 10px 0 0;'); } if (enable_goto_latest_post) { $('LI.ipsDataItem_unread DIV.ipsDataItem_main A[href*=topic]').each(function() { const href = $(this).attr('href'); if (href.indexOf('?') < 0) $(this).attr('href', href + '?do=getNewComment'); }); } const ipsPageHeader = $('DIV.ipsPageHeader'); if (enable_compact_topic_banner) { ipsPageHeader.attr('style', 'padding: 5px;'); } if (enable_modified_topic_banner) { if (!isDiscover) { const topicControls = ipsPageHeader.next(); const topicControlsLinks = topicControls.find('A'); for (var idx = 0, link; link = topicControlsLinks[idx]; idx++) { if ($(link).closest('FORM').length > 0) continue; const div = $('<div class="ipsPos_right ipsResponsive_noFloat ipsResponsive_hidePhone" style="margin-left: 5px;"></div>'); link.style = 'padding: 5px; line-height: 1.5em;'; div.append(link); ipsPageHeader.prepend(div); } } } if (enable_username_above_avatar && !isDiscover) { var authorOriginal = $('.cAuthorPane_author > strong > a'); authorOriginal.each( function(i, obj) { var txt = obj.innerHTML; var list = obj.parentElement.parentElement.nextSibling.nextSibling; list.innerHTML = '<li><strong>' + obj.outerHTML + '</strong></li>' + list.innerHTML; obj.outerHTML = '<span style="color: #346f99;">.</span>'; }); } if (enable_small_userinfo) { $('UL.cAuthorPane_info').attr('style', 'transform: scale(0.6); padding: 0; margin: -40px;'); } if (enable_compact_comment && !isDiscover) { $('DIV[data-role="commentContent"]').attr('style', 'padding: 0; font-size: small;'); } if (enable_compact_comment_footer && !isDiscover) { $('.ipsItemControls').attr('style', 'line-height: 25px; height: 25px;'); $('.ipsComment_controls').attr('style', 'line-height: 25px; height: 25px;'); $('.ipsReact_types').attr('style', 'transform: scale(0.75);'); } // Code if (enable_compact_code && !isDiscover) { $('PRE.ipsCode').attr('style', 'padding: 5px !important; font-size: small;'); } if (enable_compact_pre) { stylesheet.insertRule('PRE.ipsCode { max-height: 15em; }'); stylesheet.insertRule('PRE.ipsCode.viewAll { max-height: inherit; }'); stylesheet.insertRule('.codefold { right: 0; position: absolute !important; margin-right: 3em; }'); const a = $('<a href="javascript:void(0);" class="codefold" onclick="$(this).parent().toggleClass(\'viewAll\');">open/close</a>'); $('PRE.ipsCode').prepend(a); } // Survey if (enable_compact_survey && !isDiscover) { $(':root').attr('style', '--grid-gap: 0px;'); $('span.ipsFaded').attr('style', 'margin-left: 5px;'); } if (enable_additional_highlight) { // Highlight subforum in post listing (fluid list) $('.ipsDataItem_meta > a[href*="?forumId="]').css({ color: '#4D7395' }); // Highlight user in post listing (fluid list) $('.ipsDataItem_meta > span > a[href*="/profile/"]').css({ color: '#4D7395' }); } // Compact search bar if (enable_compact_searchbar && !isDiscover) { $('.nav-bar').attr('style', 'height: 30px;'); $('.secondary-header-align').attr('style', 'height: 30px;'); $('.ipsNavBar_primary > ul > li > a').attr('style', 'line-height: 30px;'); $('.ipsfocus-search').attr('style', 'height: 30px; line-height: 30px;'); } stylesheet.insertRule('.ipsDataList.ipsDataList_zebra > .ipsDataItem { height: 45px; }'); if (enable_compactDiscover && isDiscover) { $('LI.ipsStreamItem').attr('style', 'padding: 2px 10px !important; margin: 0 0 2px 30px !important;'); $('LI.ipsStreamItem UL.ipsTags').each(function () { $(this).closest('DIV').find('H2').append($(this)); }); } // scroll to start of content if (enable_scroll_to_content) { if ((window.location.href.indexOf('?do') < 0) && window.location.href.indexOf('#') < 0) { $('html,body').animate({scrollTop: $('#elContent').offset().top},'slow'); } } } catch(e) { // I don't wanna hear about it } })();
  13. @Adz Baywes Did you try my fix I suggested in the post above? I can't test this right now. So I'd be thankful if you could just change this one line and test again.
  14. I've tested it with a small chrome window on windows 10. If some feature doesn't work on mobile or in some browser you can always just disable that specific feature. Should work just fine - especially for the username changes. Edit: Does it work if you change this line: obj.outerHTML = '&nbsp;'; to obj.outerHTML = '_'; ? Because I couldn't set outerHTML = '' because that gave me the effect you are getting in opera. In Chrome adding a space worked to mitigate this problem. Maybe Opera treats spaces a little bit different and you need to have something "real" in there.
  15. The username change doesn't seem to affect the mobile view:
  16. I added this feature to the TamperMonkey script for now: Directlink to the post with the latest script:
  17. Neutral General

    Chrome/TamperMonkey for Design

    Hi, I added a couple things: + enable_compact_topic_banner (if you want the topic banner to be smaller, but otherwise unchanged) + enable_compact_comment_footer (reduces the height of the quote/reaction footer of comments) + enable_username_above_avatar (moves the username from the blue comment header to above the user avatar) // ==UserScript== // @name [DPE] CSS Overrides // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @match https://en.delphipraxis.net/ // @match https://en.delphipraxis.net/?* // @match https://en.delphipraxis.net/topic/* // @match https://en.delphipraxis.net/discover/* // @grant none // ==/UserScript== (function() { try{ 'use strict'; // Header const enable_compact_banner = true; const enable_compact_searchbar = true; // thread overview const enable_compact_topic_banner = true; const enable_modified_topic_banner = true; const enable_compact_fluidlist = true; const enable_additional_highlight = true; // Threads/Posts const enable_small_userinfo = true; const enable_compact_comment = true; const enable_compact_comment_footer = true; const enable_compact_pre = true; const enable_compact_code = true; const enable_compact_survey = true; const enable_username_above_avatar = true; // Other const enable_goto_latest_post = true; const enable_scroll_to_content = true; const enable_compactDiscover = true; const isDiscover = location.href.indexOf('delphipraxis.net/discover') > 0; const $ = jQuery; const stylesheet = document.styleSheets[document.styleSheets.length - 1]; if (enable_compact_banner) { $('HEADER .logo').attr('style', 'height: auto;'); $('HEADER .logo IMG').attr('style', 'margin-bottom: -30px;'); } // fluid list if (enable_compact_fluidlist && !isDiscover) { $('LI.ipsDataItem').attr('style', 'padding: 2px 0'); $('DIV.ipsDataItem_icon').attr('style', 'padding: 0 10px;'); $('DIV.ipsDataItem_main').attr('style', 'padding: 0;'); $('UL.ipsDataItem_stats').attr('style', 'padding: 0 10px 0 0;'); } if (enable_goto_latest_post) { $('LI.ipsDataItem_unread DIV.ipsDataItem_main A[href*=topic]').each(function() { const href = $(this).attr('href'); if (href.indexOf('?') < 0) $(this).attr('href', href + '?do=getNewComment'); }); } const ipsPageHeader = $('DIV.ipsPageHeader'); if (enable_compact_topic_banner) { ipsPageHeader.attr('style', 'padding: 5px;'); } if (enable_modified_topic_banner) { if (!isDiscover) { const topicControls = ipsPageHeader.next(); const topicControlsLinks = topicControls.find('A'); for (var idx = 0, link; link = topicControlsLinks[idx]; idx++) { if ($(link).closest('FORM').length > 0) continue; const div = $('<div class="ipsPos_right ipsResponsive_noFloat ipsResponsive_hidePhone" style="margin-left: 5px;"></div>'); link.style = 'padding: 5px; line-height: 1.5em;'; div.append(link); ipsPageHeader.prepend(div); } } } if (enable_username_above_avatar && !isDiscover) { var authorOriginal = $('.cAuthorPane_author > strong > a'); authorOriginal.each( function(i, obj) { var txt = obj.innerHTML; var list = obj.parentElement.parentElement.nextSibling.nextSibling; list.innerHTML = '<li><strong>' + obj.outerHTML + '</strong></li>' + list.innerHTML; obj.outerHTML = ' '; }); } if (enable_small_userinfo) { $('UL.cAuthorPane_info').attr('style', 'transform: scale(0.6); padding: 0; margin: -40px;'); } if (enable_compact_comment && !isDiscover) { $('DIV[data-role="commentContent"]').attr('style', 'padding: 0; font-size: small;'); } if (enable_compact_comment_footer && !isDiscover) { $('.ipsItemControls').attr('style', 'line-height: 25px; height: 25px;'); $('.ipsComment_controls').attr('style', 'line-height: 25px; height: 25px;'); $('.ipsReact_types').attr('style', 'transform: scale(0.75);'); } // Code if (enable_compact_code && !isDiscover) { $('PRE.ipsCode').attr('style', 'padding: 5px !important; font-size: small;'); } if (enable_compact_pre) { stylesheet.insertRule('PRE.ipsCode { max-height: 15em; }'); stylesheet.insertRule('PRE.ipsCode.viewAll { max-height: inherit; }'); stylesheet.insertRule('.codefold { right: 0; position: absolute !important; margin-right: 3em; }'); const a = $('<a href="javascript:void(0);" class="codefold" onclick="$(this).parent().toggleClass(\'viewAll\');">open/close</a>'); $('PRE.ipsCode').prepend(a); } // Survey if (enable_compact_survey && !isDiscover) { $(':root').attr('style', '--grid-gap: 0px;'); $('span.ipsFaded').attr('style', 'margin-left: 5px;'); } if (enable_additional_highlight) { // Highlight subforum in post listing (fluid list) $('.ipsDataItem_meta > a[href*="?forumId="]').css({ color: '#4D7395' }); // Highlight user in post listing (fluid list) $('.ipsDataItem_meta > span > a[href*="/profile/"]').css({ color: '#4D7395' }); } // Compact search bar if (enable_compact_searchbar && !isDiscover) { $('.nav-bar').attr('style', 'height: 30px;'); $('.secondary-header-align').attr('style', 'height: 30px;'); $('.ipsNavBar_primary > ul > li > a').attr('style', 'line-height: 30px;'); $('.ipsfocus-search').attr('style', 'height: 30px; line-height: 30px;'); } stylesheet.insertRule('.ipsDataList.ipsDataList_zebra > .ipsDataItem { height: 45px; }'); if (enable_compactDiscover && isDiscover) { $('LI.ipsStreamItem').attr('style', 'padding: 2px 10px !important; margin: 0 0 2px 30px !important;'); $('LI.ipsStreamItem UL.ipsTags').each(function () { $(this).closest('DIV').find('H2').append($(this)); }); } // scroll to start of content if (enable_scroll_to_content) { if ((window.location.href.indexOf('?do') < 0) && window.location.href.indexOf('#') < 0) { $('html,body').animate({scrollTop: $('#elContent').offset().top},'slow'); } } } catch(e) { // I don't wanna hear about it } })();
  18. Neutral General

    Open Posts from always readed Thopics

    The TamperMonkey script sakura and I work(ed) on fixes this problem. In the latest version of the script you can also turn individual features on/off. So if you don't want the other features (because in some circumstances they can break some layouts) you can just turn them off.
  19. Neutral General

    Chrome/TamperMonkey for Design

    @toms What overview is this screenshot from? The script is supposed to be used with the "Fluid" overview. Can you also give me the url to this view? Maybe I can fix something. Although as I said: If this is anything other than the fluid view, this script isn't supposed to handle this.
  20. Neutral General

    Chrome/TamperMonkey for Design

    Don't do that ๐Ÿ˜› It's not a perfect solution. The script is open source so if you know how to fix this you're welcome to change stuff ๐Ÿ˜‰
  21. Neutral General

    Chrome/TamperMonkey for Design

    Sorry for my double post. I just wanted to share my own custom version of sakuras script: At the beginning of the script are a couple constants you can set either to true or false to control which features of the script you want to use. // ==UserScript== // @name [DPE] CSS Overrides // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @match https://en.delphipraxis.net/* // @exclude *?do=edit // @grant none // ==/UserScript== (function() { try{ 'use strict'; // Header const enable_compact_banner = true; const enable_compact_searchbar = true; // thread overview const enable_modified_topic_banner = true; const enable_compact_fluidlist = true; const enable_additional_highlight = true; // Threads/Posts const enable_small_userinfo = true; const enable_compact_comment = true; const enable_compact_code = true; const enable_compact_survey = true; // Other const enable_goto_latest_post = true; const enable_scroll_to_content = true; const $ = jQuery; const stylesheet = document.styleSheets[document.styleSheets.length - 1]; if (enable_compact_banner) { $('HEADER .logo').attr('style', 'height: auto;'); $('HEADER .logo IMG').attr('style', 'margin-bottom: -30px;'); } // fluid list if (enable_compact_fluidlist) { $('LI.ipsDataItem').attr('style', 'padding: 2px 0'); $('DIV.ipsDataItem_icon').attr('style', 'padding: 0 10px;'); $('DIV.ipsDataItem_main').attr('style', 'padding: 0;'); $('UL.ipsDataItem_stats').attr('style', 'padding: 0 10px 0 0;'); } if (enable_goto_latest_post) { $('LI.ipsDataItem_unread DIV.ipsDataItem_main A[href*=topic]').each(function() { const href = $(this).attr('href'); if (href.indexOf('?') < 0) $(this).attr('href', href + '?do=getNewComment'); }); } if (enable_modified_topic_banner) { const ipsPageHeader = $('DIV.ipsPageHeader'); ipsPageHeader.attr('style', 'padding: 5px;'); const topicControls = ipsPageHeader.next(); const topicControlsLinks = topicControls.find('A'); for (var idx = 0, link; link = topicControlsLinks[idx]; idx++) { const div = $('<div class="ipsPos_right ipsResponsive_noFloat ipsResponsive_hidePhone" style="margin-left: 5px;"></div>'); link.style = 'padding: 5px; line-height: 1.5em;'; div.append(link); ipsPageHeader.prepend(div); } topicControls.remove(); } if (enable_small_userinfo) { $('UL.cAuthorPane_info').attr('style', 'transform: scale(0.6); padding: 0; margin: -40px;'); } if (enable_compact_comment) { $('DIV[data-role="commentContent"]').attr('style', 'padding: 0; font-size: small;'); } // Code if (enable_compact_code) { $('PRE.ipsCode').attr('style', 'padding: 5px !important; font-size: small;'); } // Survey if (enable_compact_survey) { $(':root').attr('style', '--grid-gap: 0px;'); $('span.ipsFaded').attr('style', 'margin-left: 5px;'); } if (enable_additional_highlight) { // Highlight subforum in post listing (fluid list) $('.ipsDataItem_meta > a[href*="?forumId="]').css({ color: '#4D7395' }); // Highlight user in post listing (fluid list) $('.ipsDataItem_meta > span > a[href*="/profile/"]').css({ color: '#4D7395' }); } // Compact search bar if (enable_compact_searchbar) { $('.nav-bar').attr('style', 'height: 30px;'); $('.secondary-header-align').attr('style', 'height: 30px;'); $('.ipsNavBar_primary > ul > li > a').attr('style', 'line-height: 30px;'); $('.ipsfocus-search').attr('style', 'height: 30px; line-height: 30px;'); } stylesheet.insertRule('.ipsDataList.ipsDataList_zebra > .ipsDataItem { height: 45px; }'); // scroll to start of content if (enable_scroll_to_content) { if (window.location.href.indexOf('?do') < 0) { $('html,body').animate({scrollTop: $('#elContent').offset().top},'slow'); } } } catch(e) { // I don't wanna hear about it } })();
  22. Neutral General

    Chrome/TamperMonkey for Design

    The 2nd screenshot from "Der schรถne Gรผnther" isn't really how it looks for me with the script. I've attached 2 pictures myself. The small search bar on top isn't officially in the script (yet). That's something I'm working on myself. The script also makes the code blocks a little bit more compact and automatically jumps to the newest post even if you don't click on the little icon etc.
  23. Neutral General

    Chrome/TamperMonkey for Design

    The script messes something up if you go to a subforum in the non-fluid view. It takes you here for example: https://en.delphipraxis.net/forum/5-rtl-and-delphi-object-pascal/ It's hard to describe. Better look for yourself and compare the page of this link with and without the tampermonkey script.
  24. Neutral General

    Proportions of forum elements

    There have been a couple people saying that they think certain elements in this forum are (mostly) too big. As there doesn't exist any thread about this yet, I'm making this thread to discuss what is or is not too big or small. The thing I recognised is, that code blocks are pretty huge. That's not that much code and it barely fits on my 1080p screen without scrolling:
  25. Neutral General

    Chrome/TamperMonkey for Design

    A 1-liner to slightly highlight the subforum in the fluid list // Highlight subforum in post listing (fluid list) $('.ipsDataItem_meta > a[href*="?forumId="]').css({ color: '#4D7395' });
ร—