Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Difference From 71f581f3e731e7c2
To 3cc37438bb772ef2
2024-03-15
| | |
02:00 |
|
check-in: 435c91c0 user: fvogel tags: core-8-6-branch
|
2024-03-14
| | |
19:38 |
|
Closed-Leaf
check-in: 3cc37438 user: fvogel tags: bug-47d4f29159
|
2024-03-13
| | |
20:50 |
|
check-in: 927b68cf user: fvogel tags: bug-47d4f29159
|
2024-02-28
| | |
21:22 |
|
check-in: ade24c0a user: dgp tags: core-8-6-branch
|
2024-02-25
| | |
20:27 |
|
check-in: 58a10b35 user: fvogel tags: bug-47d4f29159
|
20:21 |
|
check-in: 04732899 user: fvogel tags: bug-22349fc78a
|
2024-02-21
| | |
15:58 |
|
check-in: 06061eb5 user: dgp tags: core-8-6-14-rc
|
2024-02-16
| | |
15:22 |
|
check-in: 81c381e8 user: jan.nijtmans tags: core-8-branch
|
15:16 |
|
check-in: 71f581f3 user: jan.nijtmans tags: core-8-6-branch
|
2024-02-13
| | |
15:07 |
|
check-in: c8315f40 user: jan.nijtmans tags: core-8-6-branch
|
| | |
Changes to .github/workflows/linux-build.yml.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
+
|
name: Linux
on:
push:
branches:
- "main"
- "core-8-branch"
- "core-8-6-branch"
- "bug-47d4f29159"
tags:
- "core-**"
permissions:
contents: read
defaults:
run:
shell: bash
|
︙ | | |
Changes to .github/workflows/mac-build.yml.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
+
|
name: macOS
on:
push:
branches:
- "main"
- "core-8-branch"
- "core-8-6-branch"
- "bug-47d4f29159"
tags:
- "core-**"
permissions:
contents: read
env:
ERROR_ON_FAILURES: 1
jobs:
|
︙ | | |
Changes to .github/workflows/win-build.yml.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
+
|
name: Windows
on:
push:
branches:
- "main"
- "core-8-branch"
- "core-8-6-branch"
- "bug-47d4f29159"
tags:
- "core-**"
permissions:
contents: read
env:
ERROR_ON_FAILURES: 1
jobs:
|
︙ | | |
Changes to doc/ttk_panedwindow.n.
︙ | | |
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
-
+
-
-
|
.ta 5.5c 11c
\fBcget\fR \fBconfigure\fR
\fBinstate\fR \fBstate\fR
.DE
.SH "VIRTUAL EVENTS"
.PP
The panedwindow widget generates an \fB<<EnteredChild>>\fR virtual event on
LeaveNotify/NotifyInferior events, because Tk does not execute binding scripts
LeaveNotify/NotifyInferior events.
for <Leave> events when the pointer crosses from a parent to a child. The
panedwindow widget needs to know when that happens.
.SH "STYLING OPTIONS"
.PP
The class name for a \fBttk::panedwindow\fP is \fBTPanedwindow\fP. The
sash has a class name of \fBSash\fP.
.PP
\fBTPanedwindow\fP styling options configurable with \fBttk::style\fP
are:
|
︙ | | |
Changes to generic/tkBind.c.
︙ | | |
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
|
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
|
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
|
}
dispPtr = ((TkWindow *) tkwin)->dispPtr;
bindInfoPtr = winPtr->mainPtr->bindInfo;
curEvent = bindPtr->eventInfo + eventPtr->type;
/*
* Ignore the event completely if it is an Enter, Leave, FocusIn, or
* FocusOut event with detail NotifyInferior. The reason for ignoring
* these events is that we don't want transitions between a window and its
* children to be visible to bindings on the parent: this would cause
* problems for mega-widgets, since the internal structure of a
* mega-widget isn't supposed to be visible to people watching the parent.
*
* Furthermore we have to compute current time, needed for "event generate".
* Compute current time needed for "event generate",
* and reset counters for Key and Button events.
*/
switch (eventPtr->type) {
case EnterNotify:
case LeaveNotify:
if (eventPtr->xcrossing.time) {
bindInfoPtr->lastCurrentTime = CurrentTimeInMilliSecs();
bindInfoPtr->lastEventTime = eventPtr->xcrossing.time;
}
if (eventPtr->xcrossing.detail == NotifyInferior) {
return;
}
break;
case FocusIn:
case FocusOut:
if (eventPtr->xfocus.detail == NotifyInferior) {
return;
}
break;
case KeyPress:
case KeyRelease: {
int reset = 1;
if (eventPtr->xkey.time) {
bindInfoPtr->lastCurrentTime = CurrentTimeInMilliSecs();
|
︙ | | |
Changes to generic/tkCanvas.c.
︙ | | |
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
|
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
|
+
-
-
-
+
+
+
+
+
+
+
+
+
+
|
Tk_Item *itemPtr = canvasPtr->currentItemPtr;
int i;
event = canvasPtr->pickEvent;
event.type = LeaveNotify;
/*
* Behaviour before ticket #47d4f29159:
* If the event's detail happens to be NotifyInferior the binding
* mechanism will discard the event. To be consistent, always use
* NotifyAncestor.
* If the event's detail happens to be NotifyInferior the binding
* mechanism will discard the event. To be consistent, always use
* NotifyAncestor.
*
* Behaviour after ticket #47d4f29159:
* The binding mechanism doesn't discard events with detail field
* NotifyInferior anymore. It would be best to base the detail
* field on the ancestry relationship between the old and new
* canvas items. For the time being, retain the choice from before
* ticket #47d4f29159, which doesn't harm.
*/
event.xcrossing.detail = NotifyAncestor;
canvasPtr->flags |= REPICK_IN_PROGRESS;
CanvasDoEvent(canvasPtr, &event);
canvasPtr->flags &= ~REPICK_IN_PROGRESS;
|
︙ | | |
Changes to generic/tkTextTag.c.
︙ | | |
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
|
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
|
+
-
-
-
+
+
+
+
+
+
+
+
+
+
|
if ((textPtr->sharedTextPtr->bindingTable != NULL)
&& (textPtr->tkwin != NULL)
&& !(textPtr->flags & DESTROYED)) {
event = textPtr->pickEvent;
event.type = LeaveNotify;
/*
* Behaviour before ticket #47d4f29159:
* Always use a detail of NotifyAncestor. Besides being
* consistent, this avoids problems where the binding code will
* discard NotifyInferior events.
* Always use a detail of NotifyAncestor. Besides being
* consistent, this avoids problems where the binding code will
* discard NotifyInferior events.
*
* Behaviour after ticket #47d4f29159:
* The binding mechanism doesn't discard events with detail field
* NotifyInferior anymore. It would be best to base the detail
* field on the ancestry relationship between the old and new
* tags. For the time being, retain the choice from before
* ticket #47d4f29159, which doesn't harm.
*/
event.xcrossing.detail = NotifyAncestor;
TagBindEvent(textPtr, &event, numOldTags, oldArrayPtr);
}
ckfree(oldArrayPtr);
}
|
︙ | | |
Changes to generic/ttk/ttkPanedwindow.c.
︙ | | |
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
|
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
|
-
-
-
-
-
-
+
+
+
+
+
+
+
+
|
PaneRequest,
PaneRemoved
};
/*------------------------------------------------------------------------
* +++ Event handler.
*
* <<NOTE-PW-LEAVE-NOTIFYINFERIOR>>
* Tk does not execute binding scripts for <Leave> events when
* the pointer crosses from a parent to a child. This widget
* needs to know when that happens, though, so it can reset
* the cursor.
*
* This event handler generates an <<EnteredChild>> virtual event
* on LeaveNotify/NotifyInferior.
* This was originally introduced because Tk used to discard events with
* detail field NotifyInferior. The <<EnteredChild>> event was then used
* to reset the cursor when the pointer crosses from a parent to a child.
* Since ticket #47d4f29159, LeaveNotify/NotifyInferior are no longer
* discarded: the <Leave> event will trigger even with NotifyInferior
* detail field. The generated <<EnteredChild>> is nevertheless kept for
* backwards compatibility purpose since it is publicly documented,
* meaning that someone could bind to it.
*/
static const unsigned PanedEventMask = LeaveWindowMask;
static void PanedEventProc(ClientData clientData, XEvent *eventPtr)
{
WidgetCore *corePtr = (WidgetCore *)clientData;
if ( eventPtr->type == LeaveNotify
|
︙ | | |
Changes to generic/ttk/ttkWidget.c.
︙ | | |
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
|
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
-
-
|
* Processes Expose, Configure, FocusIn/Out, and Destroy events.
* Also handles <<ThemeChanged>> virtual events.
*
* For Expose and Configure, simply schedule the widget for redisplay.
* For Destroy events, handle the cleanup process.
*
* For Focus events, set/clear the focus bit in the state field.
* It turns out this is impossible to do correctly in a binding script,
* because Tk filters out focus events with detail == NotifyInferior.
*
* For Deactivate/Activate pseudo-events, set/clear the background state
* flag.
*/
static const unsigned CoreEventMask
= ExposureMask
|
︙ | | |
Changes to library/ttk/panedwindow.tcl.
︙ | | |
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
-
-
|
bind TPanedwindow <Button-1> { ttk::panedwindow::Press %W %x %y }
bind TPanedwindow <B1-Motion> { ttk::panedwindow::Drag %W %x %y }
bind TPanedwindow <ButtonRelease-1> { ttk::panedwindow::Release %W %x %y }
bind TPanedwindow <Motion> { ttk::panedwindow::SetCursor %W %x %y }
bind TPanedwindow <Enter> { ttk::panedwindow::SetCursor %W %x %y }
bind TPanedwindow <Leave> { ttk::panedwindow::ResetCursor %W }
# See <<NOTE-PW-LEAVE-NOTIFYINFERIOR>>
bind TPanedwindow <<EnteredChild>> { ttk::panedwindow::ResetCursor %W }
## Sash movement:
#
proc ttk::panedwindow::Press {w x y} {
variable State
set sash [$w identify $x $y]
|
︙ | | |
Changes to tests/bind.test.
︙ | | |
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
|
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
|
-
+
-
+
|
bind .t.f <Button> {lappend x "%W z (.t.f <Button> binding)"}
event generate .t.f <Button-1>
event generate .t.f <Button-2>
return $x
} -cleanup {
destroy .t.f
} -result {{.t.f z (.t.f <Button-1> binding)} {.t.f z (.t.f <Button> binding)}}
test bind-13.10 {Tk_BindEvent procedure: ignore NotifyInferior} -setup {
test bind-13.10 {Tk_BindEvent procedure: don't ignore NotifyInferior - bug 47d4f29159} -setup {
frame .t.f -class Test -width 150 -height 100
pack .t.f
focus -force .t.f
update
set x {}
} -body {
bind .t.f <Enter> "lappend x Enter%#"
bind .t.f <Leave> "lappend x Leave%#"
event generate .t.f <Enter> -serial 100 -detail NotifyAncestor
event generate .t.f <Enter> -serial 101 -detail NotifyInferior
event generate .t.f <Leave> -serial 102 -detail NotifyAncestor
event generate .t.f <Leave> -serial 103 -detail NotifyInferior
return $x
} -cleanup {
destroy .t.f
} -result {Enter100 Leave102}
} -result {Enter100 Enter101 Leave102 Leave103}
test bind-13.11 {Tk_BindEvent procedure: collapse Motions} -setup {
frame .t.f -class Test -width 150 -height 100
pack .t.f
focus -force .t.f
update
set x {}
} -body {
|
︙ | | |
Changes to tests/event.test.
︙ | | |
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
|
857
858
859
860
861
862
863
864
865
866
867
868
869
870
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
on which this test is run does NOT have a diaeresis \
physical key - in this case, test is actually void."
}
} -cleanup {
deleteWindows
} -result {OK}
test event-9 {no <Enter> event is generated for the container window when its
managed window in which the mouse pointer was inside gets
destroyed - bug 9e1312f32c} -setup {
set res [list ]
set iconified false
if {[winfo ismapped .]} {
wm iconify .
update
set iconified true
}
} -body {
toplevel .top
pack propagate .top 0
bind .top <Enter> {lappend res %W}
pack [frame .top.f -bg green -width 50 -height 50] -anchor se -side bottom
tkwait visibility .top.f
after 50
update
focus -force .top.f
event generate .top.f <Motion> -warp 1 -x 25 -y 25 ; # <Enter> sent to .top and .top.f
controlPointerWarpTiming
update ; # idletasks not enough
destroy .top.f ; # no <Enter> event sent
update
set res
} -cleanup {
deleteWindows
if {$iconified} {
wm deiconify .
update
}
} -result {.top .top.f}
test event-9.1 {enter . window by destroying a toplevel - bug b1d115fa60} -setup {
set EnterBind [bind . <Enter>]
} -body {
wm geometry . 200x200+300+300
wm deiconify .
_pause 200
toplevel .top2 -width 200 -height 200
|
︙ | | |