Comments (7)
Is it different from Frame#setUndecorated(true)
?
from darklaf.
Yes this keeps the window buttons and title text.
from darklaf.
https://bugs.openjdk.java.net/browse/JDK-8212549 which indeed works in Java 13.
JFrame frame = new JFrame();
final JRootPane rootPane = frame.getRootPane();
rootPane.putClientProperty("apple.awt.fullWindowContent", true);
rootPane.putClientProperty("apple.awt.transparentTitleBar", true);
from darklaf.
Great. At least for java version >= 12 this is a solution. Does moving the window work?
For java version below 12 there should still be a possibility to achieve this. Gladly because the jdk implementation also just sets those corresponding properties on the NSWindow the swing code can be reused and just the method of setting the window property still needs to be implemented natively.
Based on the jdk implementation it could look like this JNIDecorations.m
:
#include "package_path_class.h"
#import <Cocoa/Cocoa.h>
#define OBJC(jl) ((id)jlong_to_ptr(jl))
#define FULL_WINDOW_CONTENT 1 << 14
#define TRANSPARENT_TITLE_BAR 1 << 18
JNIEXPORT void JNICALL
package_path_class_installDecorations(JNIEnv *env, jclass obj, jlong windowPtr)
{
NSWindow *nsWindow = OBJC(windowPtr);
window.styleMask |= FULL_WINDOW_CONTENT | TRANSPARENT_TITLE_BAR;
}
To get hold of the window pointer Pointer.nativeValue(Native.getComponentPointer(component))
should still work on macOS.
from darklaf.
What do you think of setAccessible(true)
-driven sun.lwawt.macosx.CPlatformWindow#setStyleBits(int mask, boolean value)
for pre Java 12?
from darklaf.
Theoretically a good approach. The instance of the underlying CPlatformWindow
can be optained as follows:
WindowPeer peer = (WindowPeer)window.getPeer();
CPlatformWindow platformWindow = (CPlatformWindow)((LWWindowPeer)peer).getPlatformWindow();
Neither CPlatformWindw
nor LWWindowPeer
are visible (or included) in non macOS jdk version.
All of this would need to happen through reflection or otherwise this can't be build.
from darklaf.
@vlsi could you tell me if #54 works for your? At least for the part of actually calling setStyleBits
on CPlatformWindow
.
from darklaf.
Related Issues (20)
- Wiki Demo links not working. HOT 1
- temp files not deleted on Windows HOT 2
- Stackoverflow when setting the border of a spinner editor to an UIResource border
- Advice on how to contribute, Darklaf theme broken in JMeter 5.3, 5.4, 5.5 HOT 4
- JTree has some renderer bug HOT 3
- Event registered on EditorComponent for JComboBox will be cleared when new theme applied. HOT 3
- On a windows 10 computer,cannot open filechooser HOT 2
- JTabFrame custom PanelPopup buttons disappear after changing LaF settings HOT 1
- [Feature Request] JTabFrame disallow changing Alignment of the tabs.
- Buttons are "raised" in latest.integration (compared to 3.0.2)
- Can't build project on mac m1, 13.12.1 HOT 1
- Replace UIDefaultsWithResourceBundleCache with delegation
- [Feature Request] Allow confirm dialog on closing for ClosableTabbedPane without overwriting removeTabAt method
- [Bug] Exception when running on Windows Java 17 HOT 7
- [Bug] Opacity slider of JColorChooser has no effect
- [Feature Request] Apply color pipette with left-mouse click HOT 1
- [Bug] Wrong IconButton positioning in v3.0.3 HOT 2
- Dynamic colors in SVG icons don't work in native macOS menus
- [Feature Request] Frosted / Blurry background window support (Windows Acrylic / macOs: Vibrant) HOT 4
- Strange colors appearing in JColorChooser dialog
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from darklaf.