Program: 14119
Project: 14119
Buggy source:
@Override public boolean onTouch(View v,MotionEvent event){
  float pos=event.getY();
  if (event.getAction() == 0)   mLastYPos=pos;
  if (event.getAction() > 1) {
    int scrollThreshold=DisplayUtils.dpToPx(getActivity(),2);
    if (((mLastYPos - pos) > scrollThreshold) || ((pos - mLastYPos) > scrollThreshold))     mScrollDetected=true;
  }
  mLastYPos=pos;
  if (event.getAction() == MotionEvent.ACTION_UP) {
    ActionBar actionBar=getActionBar();
    if (actionBar != null && actionBar.isShowing()) {
      setContentEditingModeVisible(true);
      return false;
    }
  }
  if (event.getAction() == MotionEvent.ACTION_UP && !mScrollDetected) {
    Layout layout=((TextView)v).getLayout();
    int x=(int)event.getX();
    int y=(int)event.getY();
    x+=v.getScrollX();
    y+=v.getScrollY();
    if (layout != null) {
      int line=layout.getLineForVertical(y);
      int charPosition=layout.getOffsetForHorizontal(line,x);
      Spannable spannable=mContentEditText.getText();
      if (spannable == null) {
        return false;
      }
      WPImageSpan[] imageSpans=spannable.getSpans(charPosition,charPosition,WPImageSpan.class);
      if (imageSpans.length != 0) {
        final WPImageSpan imageSpan=imageSpans[0];
        MediaFile mediaFile=imageSpan.getMediaFile();
        if (mediaFile == null)         return false;
        if (!mediaFile.isVideo()) {
          LayoutInflater factory=LayoutInflater.from(getActivity());
          final View alertView=factory.inflate(R.layout.alert_image_options,null);
          if (alertView == null)           return false;
          final EditText imageWidthText=(EditText)alertView.findViewById(R.id.imageWidthText);
          final EditText titleText=(EditText)alertView.findViewById(R.id.title);
          final EditText caption=(EditText)alertView.findViewById(R.id.caption);
          final CheckBox featuredCheckBox=(CheckBox)alertView.findViewById(R.id.featuredImage);
          final CheckBox featuredInPostCheckBox=(CheckBox)alertView.findViewById(R.id.featuredInPost);
          if (mFeaturedImageSupported) {
            featuredCheckBox.setVisibility(View.VISIBLE);
            featuredInPostCheckBox.setVisibility(View.VISIBLE);
          }
          featuredCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
            @Override public void onCheckedChanged(            CompoundButton buttonView,            boolean isChecked){
              if (isChecked) {
                featuredInPostCheckBox.setVisibility(View.VISIBLE);
              }
 else {
                featuredInPostCheckBox.setVisibility(View.GONE);
              }
            }
          }
);
          final SeekBar seekBar=(SeekBar)alertView.findViewById(R.id.imageWidth);
          final Spinner alignmentSpinner=(Spinner)alertView.findViewById(R.id.alignment_spinner);
          ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(getActivity(),R.array.alignment_array,android.R.layout.simple_spinner_item);
          adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
          alignmentSpinner.setAdapter(adapter);
          imageWidthText.setText(String.valueOf(mediaFile.getWidth()) + "String_Node_Str");
          seekBar.setProgress(mediaFile.getWidth());
          titleText.setText(mediaFile.getTitle());
          caption.setText(mediaFile.getCaption());
          featuredCheckBox.setChecked(mediaFile.isFeatured());
          if (mediaFile.isFeatured()) {
            featuredInPostCheckBox.setVisibility(View.VISIBLE);
          }
 else {
            featuredInPostCheckBox.setVisibility(View.GONE);
          }
          featuredInPostCheckBox.setChecked(mediaFile.isFeaturedInPost());
          alignmentSpinner.setSelection(mediaFile.getHorizontalAlignment(),true);
          final int maxWidth=MediaUtils.getMaximumImageWidth(getActivity(),imageSpan.getImageSource(),mBlogSettingMaxImageWidth);
          seekBar.setMax(maxWidth / 10);
          if (mediaFile.getWidth() != 0) {
            seekBar.setProgress(mediaFile.getWidth() / 10);
          }
          seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){
            @Override public void onStopTrackingTouch(            SeekBar seekBar){
            }
            @Override public void onStartTrackingTouch(            SeekBar seekBar){
            }
            @Override public void onProgressChanged(            SeekBar seekBar,            int progress,            boolean fromUser){
              if (progress == 0) {
                progress=1;
              }
              imageWidthText.setText(progress * 10 + "String_Node_Str");
            }
          }
);
          imageWidthText.setOnFocusChangeListener(new View.OnFocusChangeListener(){
            @Override public void onFocusChange(            View v,            boolean hasFocus){
              if (hasFocus) {
                imageWidthText.setText("String_Node_Str");
              }
            }
          }
);
          imageWidthText.setOnEditorActionListener(new TextView.OnEditorActionListener(){
            @Override public boolean onEditorAction(            TextView v,            int actionId,            KeyEvent event){
              int width=getEditTextIntegerClamped(imageWidthText,10,maxWidth);
              seekBar.setProgress(width / 10);
              imageWidthText.setSelection((String.valueOf(width).length()));
              InputMethodManager imm=(InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
              imm.hideSoftInputFromWindow(imageWidthText.getWindowToken(),InputMethodManager.RESULT_UNCHANGED_SHOWN);
              return true;
            }
          }
);
          showImageSettings(alertView,titleText,caption,imageWidthText,featuredCheckBox,featuredInPostCheckBox,maxWidth,alignmentSpinner,imageSpan);
          mScrollDetected=false;
          return true;
        }
      }
 else {
        mContentEditText.setMovementMethod(ArrowKeyMovementMethod.getInstance());
        int selectionStart=mContentEditText.getSelectionStart();
        if (selectionStart >= 0 && mContentEditText.getSelectionEnd() >= selectionStart)         mContentEditText.setSelection(selectionStart,mContentEditText.getSelectionEnd());
      }
      MediaGalleryImageSpan[] gallerySpans=spannable.getSpans(charPosition,charPosition,MediaGalleryImageSpan.class);
      if (gallerySpans.length > 0) {
        final MediaGalleryImageSpan gallerySpan=gallerySpans[0];
        Intent intent=new Intent(ACTION_MEDIA_GALLERY_TOUCHED);
        intent.putExtra(EXTRA_MEDIA_GALLERY,gallerySpan.getMediaGallery());
        getActivity().sendBroadcast(intent);
      }
    }
  }
 else   if (event.getAction() == 1) {
    mScrollDetected=false;
  }
  return false;
}

Fixed version (ground truth):
@Override public boolean onTouch(View v,MotionEvent event){
  float pos=event.getY();
  if (event.getAction() == 0)   mLastYPos=pos;
  if (event.getAction() > 1) {
    int scrollThreshold=DisplayUtils.dpToPx(getActivity(),2);
    if (((mLastYPos - pos) > scrollThreshold) || ((pos - mLastYPos) > scrollThreshold))     mScrollDetected=true;
  }
  mLastYPos=pos;
  if (event.getAction() == MotionEvent.ACTION_UP) {
    ActionBar actionBar=getActionBar();
    if (actionBar != null && actionBar.isShowing()) {
      setContentEditingModeVisible(true);
      return false;
    }
  }
  if (event.getAction() == MotionEvent.ACTION_UP && !mScrollDetected) {
    Layout layout=((TextView)v).getLayout();
    int x=(int)event.getX();
    int y=(int)event.getY();
    x+=v.getScrollX();
    y+=v.getScrollY();
    if (layout != null) {
      int line=layout.getLineForVertical(y);
      int charPosition=layout.getOffsetForHorizontal(line,x);
      Spannable spannable=mContentEditText.getText();
      if (spannable == null) {
        return false;
      }
      WPImageSpan[] imageSpans=spannable.getSpans(charPosition,charPosition,WPImageSpan.class);
      if (imageSpans.length != 0) {
        final WPImageSpan imageSpan=imageSpans[0];
        MediaFile mediaFile=imageSpan.getMediaFile();
        if (mediaFile == null)         return false;
        if (!mediaFile.isVideo()) {
          LayoutInflater factory=LayoutInflater.from(getActivity());
          final View alertView=factory.inflate(R.layout.alert_image_options,null);
          if (alertView == null)           return false;
          final EditText imageWidthText=(EditText)alertView.findViewById(R.id.imageWidthText);
          final EditText titleText=(EditText)alertView.findViewById(R.id.title);
          final EditText caption=(EditText)alertView.findViewById(R.id.caption);
          final CheckBox featuredCheckBox=(CheckBox)alertView.findViewById(R.id.featuredImage);
          final CheckBox featuredInPostCheckBox=(CheckBox)alertView.findViewById(R.id.featuredInPost);
          if (mFeaturedImageSupported) {
            featuredCheckBox.setVisibility(View.VISIBLE);
            featuredInPostCheckBox.setVisibility(View.VISIBLE);
          }
          featuredCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
            @Override public void onCheckedChanged(            CompoundButton buttonView,            boolean isChecked){
              if (isChecked) {
                featuredInPostCheckBox.setVisibility(View.VISIBLE);
              }
 else {
                featuredInPostCheckBox.setVisibility(View.GONE);
              }
            }
          }
);
          final SeekBar seekBar=(SeekBar)alertView.findViewById(R.id.imageWidth);
          final Spinner alignmentSpinner=(Spinner)alertView.findViewById(R.id.alignment_spinner);
          ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(getActivity(),R.array.alignment_array,android.R.layout.simple_spinner_item);
          adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
          alignmentSpinner.setAdapter(adapter);
          seekBar.setProgress(mediaFile.getWidth());
          titleText.setText(mediaFile.getTitle());
          caption.setText(mediaFile.getCaption());
          featuredCheckBox.setChecked(mediaFile.isFeatured());
          if (mediaFile.isFeatured()) {
            featuredInPostCheckBox.setVisibility(View.VISIBLE);
          }
 else {
            featuredInPostCheckBox.setVisibility(View.GONE);
          }
          featuredInPostCheckBox.setChecked(mediaFile.isFeaturedInPost());
          alignmentSpinner.setSelection(mediaFile.getHorizontalAlignment(),true);
          final int maxWidth=MediaUtils.getMaximumImageWidth(getActivity(),imageSpan.getImageSource(),mBlogSettingMaxImageWidth);
          seekBar.setMax(maxWidth / 10);
          imageWidthText.setText(String.format(Locale.US,"String_Node_Str",maxWidth));
          if (mediaFile.getWidth() != 0) {
            seekBar.setProgress(mediaFile.getWidth() / 10);
          }
          seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){
            @Override public void onStopTrackingTouch(            SeekBar seekBar){
            }
            @Override public void onStartTrackingTouch(            SeekBar seekBar){
            }
            @Override public void onProgressChanged(            SeekBar seekBar,            int progress,            boolean fromUser){
              if (progress == 0) {
                progress=1;
              }
              imageWidthText.setText(String.format(Locale.US,"String_Node_Str",progress * 10));
            }
          }
);
          imageWidthText.setOnFocusChangeListener(new View.OnFocusChangeListener(){
            @Override public void onFocusChange(            View v,            boolean hasFocus){
              if (hasFocus) {
                imageWidthText.setText("String_Node_Str");
              }
            }
          }
);
          imageWidthText.setOnEditorActionListener(new TextView.OnEditorActionListener(){
            @Override public boolean onEditorAction(            TextView v,            int actionId,            KeyEvent event){
              int width=getEditTextIntegerClamped(imageWidthText,10,maxWidth);
              seekBar.setProgress(width / 10);
              imageWidthText.setSelection((String.valueOf(width).length()));
              InputMethodManager imm=(InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
              imm.hideSoftInputFromWindow(imageWidthText.getWindowToken(),InputMethodManager.RESULT_UNCHANGED_SHOWN);
              return true;
            }
          }
);
          showImageSettings(alertView,titleText,caption,imageWidthText,featuredCheckBox,featuredInPostCheckBox,maxWidth,alignmentSpinner,imageSpan);
          mScrollDetected=false;
          return true;
        }
      }
 else {
        mContentEditText.setMovementMethod(ArrowKeyMovementMethod.getInstance());
        int selectionStart=mContentEditText.getSelectionStart();
        if (selectionStart >= 0 && mContentEditText.getSelectionEnd() >= selectionStart)         mContentEditText.setSelection(selectionStart,mContentEditText.getSelectionEnd());
      }
      MediaGalleryImageSpan[] gallerySpans=spannable.getSpans(charPosition,charPosition,MediaGalleryImageSpan.class);
      if (gallerySpans.length > 0) {
        final MediaGalleryImageSpan gallerySpan=gallerySpans[0];
        Intent intent=new Intent(ACTION_MEDIA_GALLERY_TOUCHED);
        intent.putExtra(EXTRA_MEDIA_GALLERY,gallerySpan.getMediaGallery());
        getActivity().sendBroadcast(intent);
      }
    }
  }
 else   if (event.getAction() == 1) {
    mScrollDetected=false;
  }
  return false;
}