<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[175266] trunk/Source/WebKit2</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/175266">175266</a></dd>
<dt>Author</dt> <dd>joepeck@webkit.org</dd>
<dt>Date</dt> <dd>2014-10-28 12:05:32 -0700 (Tue, 28 Oct 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[iOS] iPhone should not allow selecting &lt;optgroup&gt; in &lt;select multiple&gt;
https://bugs.webkit.org/show_bug.cgi?id=137991

Reviewed by Darin Adler.

We seem to be getting the delegate when we are not supposed to.
Workaround the issue as best we can by reseting the styles
for the group's content view and not changing selections.

* UIProcess/ios/forms/WKFormSelectPicker.mm:
(-[WKMultipleSelectPicker pickerView:row:column:checked:]):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosformsWKFormSelectPickermm">trunk/Source/WebKit2/UIProcess/ios/forms/WKFormSelectPicker.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (175265 => 175266)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-10-28 18:46:23 UTC (rev 175265)
+++ trunk/Source/WebKit2/ChangeLog        2014-10-28 19:05:32 UTC (rev 175266)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2014-10-28  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        [iOS] iPhone should not allow selecting &lt;optgroup&gt; in &lt;select multiple&gt;
+        https://bugs.webkit.org/show_bug.cgi?id=137991
+
+        Reviewed by Darin Adler.
+
+        We seem to be getting the delegate when we are not supposed to.
+        Workaround the issue as best we can by reseting the styles
+        for the group's content view and not changing selections.
+
+        * UIProcess/ios/forms/WKFormSelectPicker.mm:
+        (-[WKMultipleSelectPicker pickerView:row:column:checked:]):
+
</ins><span class="cx"> 2014-10-28  Tim Horton  &lt;timothy_horton@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove an inaccurate comment in WKActionMenuController
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosformsWKFormSelectPickermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/forms/WKFormSelectPicker.mm (175265 => 175266)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/forms/WKFormSelectPicker.mm        2014-10-28 18:46:23 UTC (rev 175265)
+++ trunk/Source/WebKit2/UIProcess/ios/forms/WKFormSelectPicker.mm        2014-10-28 19:05:32 UTC (rev 175266)
</span><span class="lines">@@ -42,6 +42,7 @@
</span><span class="cx"> using namespace WebKit;
</span><span class="cx"> 
</span><span class="cx"> static const float DisabledOptionAlpha = 0.3;
</span><ins>+static const float GroupOptionTextColorAlpha = 0.5;
</ins><span class="cx"> 
</span><span class="cx"> @interface UIPickerView (UIPickerViewInternal)
</span><span class="cx"> - (BOOL)allowsMultipleSelection;
</span><span class="lines">@@ -110,7 +111,7 @@
</span><span class="cx"> 
</span><span class="cx">     [[self titleLabel] setText:trimmedText];
</span><span class="cx">     [self setChecked:NO];
</span><del>-    [[self titleLabel] setTextColor:[UIColor colorWithWhite:0.0 alpha:0.5]];
</del><ins>+    [[self titleLabel] setTextColor:[UIColor colorWithWhite:0.0 alpha:GroupOptionTextColorAlpha]];
</ins><span class="cx">     [self setDisabled:YES];
</span><span class="cx"> 
</span><span class="cx">     return self;
</span><span class="lines">@@ -279,6 +280,17 @@
</span><span class="cx"> 
</span><span class="cx">     OptionItem&amp; item = [_view assistedNodeSelectOptions][rowIndex];
</span><span class="cx"> 
</span><ins>+    // FIXME: Remove this workaround once &lt;rdar://problem/18745253&gt; is fixed.
+    // Group rows should not be checkable, but we are getting this delegate for
+    // those rows. As a workaround, if we get this delegate for a group row, reset
+    // the styles for the content view so it still appears unselected.
+    if (item.isGroup) {
+        UIPickerContentView *view = (UIPickerContentView *)[self viewForRow:rowIndex forComponent:columnIndex];
+        [view setChecked:NO];
+        [[view titleLabel] setTextColor:[UIColor colorWithWhite:0.0 alpha:GroupOptionTextColorAlpha]];
+        return;
+    }
+
</ins><span class="cx">     if ([self allowsMultipleSelection]) {
</span><span class="cx">         [_view page]-&gt;setAssistedNodeSelectedIndex([self findItemIndexAt:rowIndex], true);
</span><span class="cx">         item.isSelected = isChecked;
</span></span></pre>
</div>
</div>

</body>
</html>