One other point: if the MenuBar is DRAGGABLE, there's no resize cursor and
it's also not actually draggable, it must be DRAGGABLE_SUBTREE).

On Thu, 1 Jan 2026 at 22:17, Cormac Redmond <[email protected]> wrote:

> Hi,
>
> This doesn't quite make sense to me, the Left and Right have a resize
> cursor, and neither of those are set as draggable. I guess it's because of
> their height/placement. E.g., see left versus right (Label versus HBox) in
> slightly tweaked code.
>
> E.g.:
>
> [image: curs.gif]
>
> So this brings me to another problem. We don't want some nodes to be
> draggable, such as the MenuBar. Because if it is, we end up with this:
>
> [image: menu.gif]
>
> And if you make it *non-draggable*, you lose the resize cursor (in
> IntelliJ, you get both non-drag behaviour, and resize cursor above the
> menu). It seems very confusing and non-intuitive; this relationship between
> dragging options and seeing a resize cursor and how they're incompatible
> re: the menu example.
>
> public class MenuCursorIssue extends Application {
>     public static void main(String[] args) { launch(args); }
>
>     @Override
>     public void start(Stage primaryStage) {
>
>         MenuBar menuBar = new MenuBar();
>         final Menu file = new Menu("File");
>         file.getItems().addAll(new Menu("New"), new Menu("Open"));
>
>         menuBar.getMenus().addAll(file, new Menu("Edit"));
>
>         Region region = new Region();
>         HBox.setHgrow(region, Priority.ALWAYS);
>         // HeaderBar.setDragType(menuBar,
> HeaderDragType.DRAGGABLE_SUBTREE);
>
>         HeaderBar.setDragType(region, HeaderDragType.DRAGGABLE_SUBTREE);
>         HBox menuHbox = new HBox(menuBar, region);
>
>         final HeaderBar headerBar = new HeaderBar();
>         headerBar.setCenter(menuHbox);
>
>         primaryStage.initStyle(StageStyle.EXTENDED);
>         primaryStage.setScene(new Scene(new BorderPane(new
> Label("center"), headerBar, null, null, null), 600, 400));
>         primaryStage.show();
>     }
> }
>
>
>
>
>
> Kind Regards,
> Cormac
>
> On Thu, 1 Jan 2026 at 21:41, Michael Strauß <[email protected]>
> wrote:
>
>> Hi Cormac,
>>
>> that's not a bug: On Windows, the top resize border is inside of the
>> window, while the other three resize borders are outside of the window. You
>> only get a resize cursor if the area below the cursor is draggable, which
>> your green HBox is not. If you make it draggable, then you'll also get a
>> resize cursor. This is by design, as the resize border shouldn't overlap
>> client elements (in our case, elements that are not draggable).
>>
>> The fact that you get a resize cursor for the top edge of the red label
>> looks like it may have something to do with the fact that it's a label, but
>> in reality the label is just placed close enough to the top edge of the
>> window so that the resize border extends a tiny bit over the label (which
>> is draggable).
>>
>

Reply via email to