diff --git a/src/lib.rs b/src/lib.rs index addc5b6..7a66e08 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -335,6 +335,10 @@ impl<'tree, Tab> DockArea<'tree, Tab> { let is_being_dragged = ui.memory().is_being_dragged(id) && style.tabs_are_draggable; + if is_being_dragged { + ui.output().cursor_icon = CursorIcon::Grabbing; + } + let is_active = *active == tab_index || is_being_dragged; let label = tab_viewer.title(tab); @@ -355,9 +359,7 @@ impl<'tree, Tab> DockArea<'tree, Tab> { .response; let sense = Sense::click_and_drag(); - let response = ui - .interact(response.rect, id, sense) - .on_hover_cursor(CursorIcon::Grabbing); + let response = ui.interact(response.rect, id, sense); if let Some(pointer_pos) = ui.ctx().pointer_interact_pos() { let center = response.rect.center(); diff --git a/src/style.rs b/src/style.rs index fc240ab..ebb1db1 100644 --- a/src/style.rs +++ b/src/style.rs @@ -215,8 +215,10 @@ impl Style { vec2(galley.size().x + offset.x * 2.0, 24.0) }; - let (rect, response) = ui.allocate_at_least(desired_size, Sense::hover()); - let response = response.on_hover_cursor(CursorIcon::PointingHand); + let (rect, mut response) = ui.allocate_at_least(desired_size, Sense::hover()); + if !ui.memory().is_anything_being_dragged() { + response = response.on_hover_cursor(CursorIcon::Grab); + } let (x_rect, x_res) = if (active || response.hovered()) && self.show_close_buttons { let mut pos = rect.right_top();