Skip to content

Commit 4ef5e84

Browse files
committed
[[Bug 20509]] Segmented control posts hiliteChanged when created
Added 2 constants `(kPostMessage, kDontPostMessage)` and added parameter to `setSelected` handler `(pPostMessage)`. This allows the `OnLoad` handler to bypass posting the `hiliteChanged` message. Modified the `OnCreate` handler to directly set the selected states similar to how the labels are set.
1 parent 0cb09a3 commit 4ef5e84

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# [20509] Segmented control posts hiliteChanged when created

extensions/widgets/segmented/segmented.lcb

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ constant kDefaultSegmentLabel is "Label"
212212
constant kDefaultSegmentMinExtent is 50
213213
constant kDefaultSelectedLabelColor is [1,1,1]
214214

215+
constant kPostMessage is true
216+
constant kDontPostMessage is false
215217
--
216218

217219
public handler OnSave(out rProperties as Array)
@@ -252,12 +254,11 @@ public handler OnLoad(in pProperties as Array)
252254
put pProperties["segmentMinExtent"] into mSegmentMinExtent
253255
end if
254256
put pProperties["showFrameBorder"] into mShowFrameBorder
255-
setSelected(pProperties["selectedSegment"])
257+
setSelected(pProperties["selectedSegment"], kDontPostMessage)
256258

257259
if "selectedLabelColor" is among the keys of pProperties then
258260
put stringToColor(pProperties["selectedLabelColor"]) into mSelectedLabelColor
259261
end if
260-
261262

262263
end handler
263264

@@ -270,10 +271,10 @@ public handler OnCreate()
270271
put ["Label 1","Label 2","Label 3"] into mSegmentLabels
271272
put ["align left","align center","align right"] into mSegmentIcons
272273
put ["align left","align center","align right"] into mSelectedIcons
274+
put [false, false, false] into mSegmentSelected
273275

274276
put "text" into mSegmentDisplay
275277
put [kDefaultSegmentMinExtent, kDefaultSegmentMinExtent, kDefaultSegmentMinExtent] into mSegmentMinExtent
276-
setSelected([])
277278

278279
put true into mShowFrameBorder
279280
put true into mIsHorizontal
@@ -355,9 +356,9 @@ public handler OnClick() returns nothing
355356
-- deselect the currently selected segment. If the clicked-on segment is
356357
-- already selected, then act according to toggleHilites property
357358
if mSegmentSelected[tSegmentIndex] and mToggleHilites then
358-
setSelected([])
359+
setSelected([], kPostMessage)
359360
else if not mSegmentSelected[tSegmentIndex] then
360-
setSelected([tSegmentIndex])
361+
setSelected([tSegmentIndex], kPostMessage)
361362
end if
362363
else
363364
-- If can multiselect, then select the clicked-on segment if it is
@@ -668,7 +669,7 @@ private handler setSelectedLabelColor(in pColor as String)
668669
redraw all
669670
end handler
670671

671-
handler setSelected(in pIndices as List) returns nothing
672+
handler setSelected(in pIndices as List, in pPostMessage as Boolean) returns nothing
672673
variable tState as List
673674
variable tIndex as Number
674675

@@ -697,7 +698,9 @@ handler setSelected(in pIndices as List) returns nothing
697698

698699
put tState into mSegmentSelected
699700
redraw all
700-
post "hiliteChanged"
701+
if pPostMessage then
702+
post "hiliteChanged"
703+
end if
701704
end handler
702705

703706
handler getSelected() returns List
@@ -714,7 +717,7 @@ handler getSelected() returns List
714717
end handler
715718

716719
handler updateSelected()
717-
setSelected(getSelected())
720+
setSelected(getSelected(), kPostMessage)
718721
end handler
719722

720723
----------------------------------------------------------------
@@ -1104,7 +1107,7 @@ private handler setMultiSelect(in pCanMultiSelect as Boolean)
11041107
-- the selection
11051108
if not pCanMultiSelect and \
11061109
the number of elements in getSelected() > 1 then
1107-
setSelected([])
1110+
setSelected([], kPostMessage)
11081111
end if
11091112
end handler
11101113

@@ -1226,7 +1229,7 @@ private handler setSelectedSegmentIndices(in pIndices as String) returns nothing
12261229
end if
12271230
end repeat
12281231

1229-
setSelected(tIndices)
1232+
setSelected(tIndices, kPostMessage)
12301233
end handler
12311234

12321235
private handler getSelectedSegmentIndices() returns String
@@ -1276,7 +1279,7 @@ private handler setSelectedSegmentNames(in pItemNames as String) returns nothing
12761279
end if
12771280
end repeat
12781281

1279-
setSelected(tIndices)
1282+
setSelected(tIndices, kPostMessage)
12801283
end handler
12811284

12821285
private handler getSelectedSegmentNames() returns String

0 commit comments

Comments
 (0)