Skip to content

Commit 2baf3d6

Browse files
author
Alan Fleming
committed
Fix/unify tooltips.
1 parent 3fec38a commit 2baf3d6

File tree

6 files changed

+22
-29
lines changed

6 files changed

+22
-29
lines changed

packages/base/src/widget.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,14 +1096,20 @@ export class DOMWidgetView extends WidgetView {
10961096
}
10971097

10981098
updateTooltip(): void {
1099-
const title = this.model.get('tooltip');
1099+
const title = this.tooltip;
11001100
if (!title) {
11011101
this.el.removeAttribute('title');
1102-
} else if (this.model.get('description').length === 0) {
1102+
} else if (!this.model.get('description')) {
11031103
this.el.setAttribute('title', title);
11041104
}
11051105
}
11061106

1107+
get tooltip() {
1108+
return (
1109+
this.model.get('tooltip') ?? (this.model.get('description'))
1110+
);
1111+
}
1112+
11071113
/**
11081114
* Update the DOM classes applied to an element, default to this.el.
11091115
*/

packages/controls/src/widget_bool.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,7 @@ export class CheckboxView extends DescriptionView {
153153
this.descriptionSpan.textContent = description;
154154
}
155155
this.typeset(this.descriptionSpan);
156-
this.descriptionSpan.title = description;
157-
this.checkbox.title = description;
156+
this.updateTooltip();
158157
}
159158

160159
/**
@@ -181,13 +180,11 @@ export class CheckboxView extends DescriptionView {
181180
}
182181

183182
updateTooltip(): void {
183+
super.updateTooltip();
184184
if (!this.checkbox) return; // we might be constructing the parent
185-
const title = this.model.get('tooltip');
186-
if (!title) {
187-
this.checkbox.removeAttribute('title');
188-
} else if (this.model.get('description').length === 0) {
189-
this.checkbox.setAttribute('title', title);
190-
}
185+
const title = this.tooltip;
186+
this.checkbox.setAttribute('title', title);
187+
this.descriptionSpan.setAttribute('title', title);
191188
}
192189

193190
events(): { [e: string]: string } {

packages/controls/src/widget_description.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,9 @@ export class DescriptionView extends DOMWidgetView {
9898
}
9999

100100
updateTooltip(): void {
101+
super.updateTooltip();
101102
if (!this.label) return;
102-
this.label.title = this.model.get('tooltip');
103+
this.label.title = this.tooltip;
103104
}
104105

105106
label: HTMLLabelElement;

packages/controls/src/widget_selection.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,9 @@ export class SelectionView extends DescriptionView {
6868
}
6969

7070
updateTooltip(): void {
71+
super.updateTooltip();
7172
if (!this.listbox) return; // we might be constructing the parent
72-
const title = this.model.get('tooltip');
73-
if (!title) {
74-
this.listbox.removeAttribute('title');
75-
} else if (this.model.get('description').length === 0) {
76-
this.listbox.setAttribute('title', title);
77-
}
73+
this.listbox.setAttribute('title', this.tooltip);
7874
}
7975

8076
listbox: HTMLSelectElement;

packages/controls/src/widget_string.ts

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -379,13 +379,9 @@ export class TextareaView extends StringView {
379379
}
380380

381381
updateTooltip(): void {
382+
super.updateTooltip();
382383
if (!this.textbox) return; // we might be constructing the parent
383-
const title = this.model.get('tooltip');
384-
if (!title) {
385-
this.textbox.removeAttribute('title');
386-
} else if (this.model.get('description').length === 0) {
387-
this.textbox.setAttribute('title', title);
388-
}
384+
this.textbox.setAttribute('title', this.tooltip);
389385
}
390386

391387
events(): { [e: string]: string } {
@@ -505,13 +501,9 @@ export class TextView extends StringView {
505501
}
506502

507503
updateTooltip(): void {
504+
super.updateTooltip();
508505
if (!this.textbox) return; // we might be constructing the parent
509-
const title = this.model.get('tooltip');
510-
if (!title) {
511-
this.textbox.removeAttribute('title');
512-
} else if (this.model.get('description').length === 0) {
513-
this.textbox.setAttribute('title', title);
514-
}
506+
this.textbox.setAttribute('title', this.tooltip);
515507
}
516508

517509
update(options?: any): void {

python/ipywidgets/ipywidgets/widgets/widget_output.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def func():
5959

6060
msg_id = Unicode('', help="Parent message id of messages to capture").tag(sync=True)
6161
outputs = TypedTuple(trait=Dict(), help="The output messages synced from the frontend.").tag(sync=True)
62+
tooltip = Unicode('', allow_none=True, help="A tooltip caption.").tag(sync=True)
6263

6364
__counter = 0
6465

0 commit comments

Comments
 (0)