diff --git a/customtkinter/windows/widgets/ctk_floating_frame.py b/customtkinter/windows/widgets/ctk_floating_frame.py index 9e996c8..42ba27e 100644 --- a/customtkinter/windows/widgets/ctk_floating_frame.py +++ b/customtkinter/windows/widgets/ctk_floating_frame.py @@ -53,16 +53,23 @@ def __init__(self, self._toplevel.attributes("-topmost", True) self._toplevel.attributes("-alpha", 1.0 - self._theme_ff_info["transparency"]) self._toplevel.resizable(width=True, height=True) - self._toplevel.overrideredirect(True) if sys.platform.startswith("win"): + self._toplevel.overrideredirect(True) self._toplevel.attributes("-transparentcolor", self._apply_appearance_mode(self.transparent_color)) self._toplevel.attributes("-toolwindow", True) # removes icon from taskbar elif sys.platform.startswith("darwin"): - self.transparent_color = "systemTransparent" - self._toplevel.attributes("-transparent", True) + if tkinter.TkVersion >= 9.0: #necessary to achieve transparent edges due to changes in Tk 9.x on MacOS + self._toplevel.wm_attributes(stylemask=('fullsizecontent','titled')) + self._toplevel.title("") + self._theme_ff_info["corner_radius"] = 0 + else: + self._toplevel.overrideredirect(True) + self.transparent_color = "systemTransparent" + self._toplevel.attributes("-transparent", True) else: #Linux doesn't support transparency, so we force the frame to cover all available space + self._toplevel.overrideredirect(True) self._theme_ff_info["corner_radius"] = 0 # frame @@ -126,6 +133,8 @@ def open(self, x_root: int, y_root: int, anchor: AnchorType = "nw") -> None: self._toplevel.geometry(f"{width}x{height}+{x_root - x_delta}+{y_root - y_delta}", apply_scaling=False) self._toplevel.deiconify() + if tkinter.TkVersion >= 9.0 and sys.platform.startswith("darwin"): #necessary to achieve transparent edges due to changes in Tk 9.x on MacOS + self._toplevel.wm_attributes(stylemask=('fullsizecontent','titled')) def close(self) -> None: """ Hides the widget. """