Avoid ImageIcon use in more places, to preserve HiDPI icon resolution - #7472

Merged
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform
Jul 2, 2024
Merged

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution#7472
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented Jun 13, 2024

Copy link
Copy Markdown
Contributor

Replace various instances of 'new ImageIcon' with ImageUtilities.image2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) when relevant, and preserves rendering hints in ImageUtilities for bitmap icon scaling.

(These changes were made to ensure that the SVG icons added in #7463 actually show up in high resolution in various places.)

…e2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) where relevant.
@eirikbakkeeirikbakke added UI User Interface Platform [ci] enable platform tests (platform/*) ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) labels Jun 13, 2024

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build from source - saw no change on "normal DPI", but changes look sane to me.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

@matthiasblaesing Thanks! Yeah, with no HiDPI scaling, icons should look identical.

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I suspected as much, I was between Comment and Approve. I eyeballed it, it builds, so it should work. If it does what it promises, would need someone with HiDPI setup.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Verifying that things don't break on regular 1:1 scaling is probably good enough, since any visual difference is purely cosmetic. I've also tested the patch in my working IDE and NetBeans Platform app for the last 6 months, confirming no breakage.

(On Windows, I think scaling can be enabled from the "Display settings" control panel app whether or not the screen is actually HiDPI. On MacOS, every MacBook or Apple display is Retina i.e. 2x scaling these days.)

@eirikbakke
eirikbakke merged commit 37bdd47 into apache:masterJul 2, 2024
@mbienmbien added this to the NB23 milestone Jul 18, 2024
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 5, 2025
…. (Manually applied PR#8109.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: Single-line changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit that referenced this pull request Feb 22, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in #7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:dev-build[ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page)Platform[ci] enable platform tests (platform/*)UIUser Interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eirikbakke@matthiasblaesing@mbien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution - #7472

Merged
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform
Jul 2, 2024
Merged

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution#7472
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented Jun 13, 2024

Copy link
Copy Markdown
Contributor

Replace various instances of 'new ImageIcon' with ImageUtilities.image2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) when relevant, and preserves rendering hints in ImageUtilities for bitmap icon scaling.

(These changes were made to ensure that the SVG icons added in #7463 actually show up in high resolution in various places.)

…e2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) where relevant.
@eirikbakkeeirikbakke added UI User Interface Platform [ci] enable platform tests (platform/*) ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) labels Jun 13, 2024

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build from source - saw no change on "normal DPI", but changes look sane to me.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

@matthiasblaesing Thanks! Yeah, with no HiDPI scaling, icons should look identical.

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I suspected as much, I was between Comment and Approve. I eyeballed it, it builds, so it should work. If it does what it promises, would need someone with HiDPI setup.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Verifying that things don't break on regular 1:1 scaling is probably good enough, since any visual difference is purely cosmetic. I've also tested the patch in my working IDE and NetBeans Platform app for the last 6 months, confirming no breakage.

(On Windows, I think scaling can be enabled from the "Display settings" control panel app whether or not the screen is actually HiDPI. On MacOS, every MacBook or Apple display is Retina i.e. 2x scaling these days.)

@eirikbakke
eirikbakke merged commit 37bdd47 into apache:masterJul 2, 2024
@mbienmbien added this to the NB23 milestone Jul 18, 2024
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 5, 2025
…. (Manually applied PR#8109.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: Single-line changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit that referenced this pull request Feb 22, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in #7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:dev-build[ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page)Platform[ci] enable platform tests (platform/*)UIUser Interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eirikbakke@matthiasblaesing@mbien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution - #7472

Merged
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform
Jul 2, 2024
Merged

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution#7472
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented Jun 13, 2024

Copy link
Copy Markdown
Contributor

Replace various instances of 'new ImageIcon' with ImageUtilities.image2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) when relevant, and preserves rendering hints in ImageUtilities for bitmap icon scaling.

(These changes were made to ensure that the SVG icons added in #7463 actually show up in high resolution in various places.)

…e2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) where relevant.
@eirikbakkeeirikbakke added UI User Interface Platform [ci] enable platform tests (platform/*) ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) labels Jun 13, 2024

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build from source - saw no change on "normal DPI", but changes look sane to me.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

@matthiasblaesing Thanks! Yeah, with no HiDPI scaling, icons should look identical.

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I suspected as much, I was between Comment and Approve. I eyeballed it, it builds, so it should work. If it does what it promises, would need someone with HiDPI setup.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Verifying that things don't break on regular 1:1 scaling is probably good enough, since any visual difference is purely cosmetic. I've also tested the patch in my working IDE and NetBeans Platform app for the last 6 months, confirming no breakage.

(On Windows, I think scaling can be enabled from the "Display settings" control panel app whether or not the screen is actually HiDPI. On MacOS, every MacBook or Apple display is Retina i.e. 2x scaling these days.)

@eirikbakke
eirikbakke merged commit 37bdd47 into apache:masterJul 2, 2024
@mbienmbien added this to the NB23 milestone Jul 18, 2024
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 5, 2025
…. (Manually applied PR#8109.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: Single-line changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit that referenced this pull request Feb 22, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in #7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:dev-build[ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page)Platform[ci] enable platform tests (platform/*)UIUser Interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eirikbakke@matthiasblaesing@mbien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution - #7472

Merged
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform
Jul 2, 2024
Merged

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution#7472
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented Jun 13, 2024

Copy link
Copy Markdown
Contributor

Replace various instances of 'new ImageIcon' with ImageUtilities.image2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) when relevant, and preserves rendering hints in ImageUtilities for bitmap icon scaling.

(These changes were made to ensure that the SVG icons added in #7463 actually show up in high resolution in various places.)

…e2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) where relevant.
@eirikbakkeeirikbakke added UI User Interface Platform [ci] enable platform tests (platform/*) ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) labels Jun 13, 2024

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build from source - saw no change on "normal DPI", but changes look sane to me.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

@matthiasblaesing Thanks! Yeah, with no HiDPI scaling, icons should look identical.

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I suspected as much, I was between Comment and Approve. I eyeballed it, it builds, so it should work. If it does what it promises, would need someone with HiDPI setup.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Verifying that things don't break on regular 1:1 scaling is probably good enough, since any visual difference is purely cosmetic. I've also tested the patch in my working IDE and NetBeans Platform app for the last 6 months, confirming no breakage.

(On Windows, I think scaling can be enabled from the "Display settings" control panel app whether or not the screen is actually HiDPI. On MacOS, every MacBook or Apple display is Retina i.e. 2x scaling these days.)

@eirikbakke
eirikbakke merged commit 37bdd47 into apache:masterJul 2, 2024
@mbienmbien added this to the NB23 milestone Jul 18, 2024
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 5, 2025
…. (Manually applied PR#8109.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: Single-line changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit that referenced this pull request Feb 22, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in #7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:dev-build[ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page)Platform[ci] enable platform tests (platform/*)UIUser Interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eirikbakke@matthiasblaesing@mbien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution - #7472

Merged
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform
Jul 2, 2024
Merged

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution#7472
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented Jun 13, 2024

Copy link
Copy Markdown
Contributor

Replace various instances of 'new ImageIcon' with ImageUtilities.image2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) when relevant, and preserves rendering hints in ImageUtilities for bitmap icon scaling.

(These changes were made to ensure that the SVG icons added in #7463 actually show up in high resolution in various places.)

…e2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) where relevant.
@eirikbakkeeirikbakke added UI User Interface Platform [ci] enable platform tests (platform/*) ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) labels Jun 13, 2024

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build from source - saw no change on "normal DPI", but changes look sane to me.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

@matthiasblaesing Thanks! Yeah, with no HiDPI scaling, icons should look identical.

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I suspected as much, I was between Comment and Approve. I eyeballed it, it builds, so it should work. If it does what it promises, would need someone with HiDPI setup.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Verifying that things don't break on regular 1:1 scaling is probably good enough, since any visual difference is purely cosmetic. I've also tested the patch in my working IDE and NetBeans Platform app for the last 6 months, confirming no breakage.

(On Windows, I think scaling can be enabled from the "Display settings" control panel app whether or not the screen is actually HiDPI. On MacOS, every MacBook or Apple display is Retina i.e. 2x scaling these days.)

@eirikbakke
eirikbakke merged commit 37bdd47 into apache:masterJul 2, 2024
@mbienmbien added this to the NB23 milestone Jul 18, 2024
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 5, 2025
…. (Manually applied PR#8109.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: Single-line changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit that referenced this pull request Feb 22, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in #7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:dev-build[ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page)Platform[ci] enable platform tests (platform/*)UIUser Interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eirikbakke@matthiasblaesing@mbien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution - #7472

Merged
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform
Jul 2, 2024
Merged

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution#7472
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented Jun 13, 2024

Copy link
Copy Markdown
Contributor

Replace various instances of 'new ImageIcon' with ImageUtilities.image2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) when relevant, and preserves rendering hints in ImageUtilities for bitmap icon scaling.

(These changes were made to ensure that the SVG icons added in #7463 actually show up in high resolution in various places.)

…e2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) where relevant.
@eirikbakkeeirikbakke added UI User Interface Platform [ci] enable platform tests (platform/*) ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) labels Jun 13, 2024

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build from source - saw no change on "normal DPI", but changes look sane to me.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

@matthiasblaesing Thanks! Yeah, with no HiDPI scaling, icons should look identical.

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I suspected as much, I was between Comment and Approve. I eyeballed it, it builds, so it should work. If it does what it promises, would need someone with HiDPI setup.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Verifying that things don't break on regular 1:1 scaling is probably good enough, since any visual difference is purely cosmetic. I've also tested the patch in my working IDE and NetBeans Platform app for the last 6 months, confirming no breakage.

(On Windows, I think scaling can be enabled from the "Display settings" control panel app whether or not the screen is actually HiDPI. On MacOS, every MacBook or Apple display is Retina i.e. 2x scaling these days.)

@eirikbakke
eirikbakke merged commit 37bdd47 into apache:masterJul 2, 2024
@mbienmbien added this to the NB23 milestone Jul 18, 2024
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 5, 2025
…. (Manually applied PR#8109.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: Single-line changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit that referenced this pull request Feb 22, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in #7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:dev-build[ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page)Platform[ci] enable platform tests (platform/*)UIUser Interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eirikbakke@matthiasblaesing@mbien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution - #7472

Merged
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform
Jul 2, 2024
Merged

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution#7472
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented Jun 13, 2024

Copy link
Copy Markdown
Contributor

Replace various instances of 'new ImageIcon' with ImageUtilities.image2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) when relevant, and preserves rendering hints in ImageUtilities for bitmap icon scaling.

(These changes were made to ensure that the SVG icons added in #7463 actually show up in high resolution in various places.)

…e2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) where relevant.
@eirikbakkeeirikbakke added UI User Interface Platform [ci] enable platform tests (platform/*) ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) labels Jun 13, 2024

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build from source - saw no change on "normal DPI", but changes look sane to me.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

@matthiasblaesing Thanks! Yeah, with no HiDPI scaling, icons should look identical.

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I suspected as much, I was between Comment and Approve. I eyeballed it, it builds, so it should work. If it does what it promises, would need someone with HiDPI setup.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Verifying that things don't break on regular 1:1 scaling is probably good enough, since any visual difference is purely cosmetic. I've also tested the patch in my working IDE and NetBeans Platform app for the last 6 months, confirming no breakage.

(On Windows, I think scaling can be enabled from the "Display settings" control panel app whether or not the screen is actually HiDPI. On MacOS, every MacBook or Apple display is Retina i.e. 2x scaling these days.)

@eirikbakke
eirikbakke merged commit 37bdd47 into apache:masterJul 2, 2024
@mbienmbien added this to the NB23 milestone Jul 18, 2024
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 5, 2025
…. (Manually applied PR#8109.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: Single-line changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit that referenced this pull request Feb 22, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in #7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:dev-build[ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page)Platform[ci] enable platform tests (platform/*)UIUser Interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eirikbakke@matthiasblaesing@mbien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution - #7472

Merged
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform
Jul 2, 2024
Merged

Avoid ImageIcon use in more places, to preserve HiDPI icon resolution#7472
eirikbakke merged 1 commit into
apache:masterfrom
eirikbakke:pr-imageiconplatform

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented Jun 13, 2024

Copy link
Copy Markdown
Contributor

Replace various instances of 'new ImageIcon' with ImageUtilities.image2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) when relevant, and preserves rendering hints in ImageUtilities for bitmap icon scaling.

(These changes were made to ensure that the SVG icons added in #7463 actually show up in high resolution in various places.)

…e2Icon in the platform module. This preserves HiDPI icons (e.g. SVG icons loaded by ImageUtilities) where relevant.
@eirikbakkeeirikbakke added UI User Interface Platform [ci] enable platform tests (platform/*) ci:dev-build [ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page) labels Jun 13, 2024

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build from source - saw no change on "normal DPI", but changes look sane to me.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

@matthiasblaesing Thanks! Yeah, with no HiDPI scaling, icons should look identical.

@matthiasblaesingmatthiasblaesing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I suspected as much, I was between Comment and Approve. I eyeballed it, it builds, so it should work. If it does what it promises, would need someone with HiDPI setup.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Verifying that things don't break on regular 1:1 scaling is probably good enough, since any visual difference is purely cosmetic. I've also tested the patch in my working IDE and NetBeans Platform app for the last 6 months, confirming no breakage.

(On Windows, I think scaling can be enabled from the "Display settings" control panel app whether or not the screen is actually HiDPI. On MacOS, every MacBook or Apple display is Retina i.e. 2x scaling these days.)

@eirikbakke
eirikbakke merged commit 37bdd47 into apache:masterJul 2, 2024
@mbienmbien added this to the NB23 milestone Jul 18, 2024
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 2, 2025
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 5, 2025
…. (Manually applied PR#8109.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: Single-line changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit to eirikbakke/incubator-netbeans that referenced this pull request Jan 24, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in apache#7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
eirikbakke added a commit that referenced this pull request Feb 22, 2025
…. (Commit 1: The simplest/most localized changes.)
Replace most of the remaining trivial uses of the ImageIcon(Image) constructor, replacing these with ImageUtilities.image2Icon or ImageUtilities.loadImageIcon. This allows SVG icons, when/once present, to render in full resolution on HiDPI/Retina displays. Bitmap icons also benefit from the improved scaling hints applied by ImageUtilities.
Similar work was done, for the platform module only, in #7472 . This commit covers most of the remaining trivial cases; I grepped the codebase for 'new ImageIcon' and adjusted the code to avoid ImageIcon whenever this could be done easily (not changing APIs, requiring only a visual code review).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:dev-build[ci] produce a dev-build zip artifact (7 days expiration, see link on workflow summary page)Platform[ci] enable platform tests (platform/*)UIUser Interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@eirikbakke@matthiasblaesing@mbien