[Patchew-devel] [PATCH] add copy to clipboard button next to search

Caio Carrara ccarrara at redhat.com
Mon Nov 26 14:35:40 UTC 2018


On Mon, Nov 26, 2018 at 01:36:25PM +0100, Paolo Bonzini wrote:
> This can be useful to copy and paste into the patchew-cli command line.
> 
> Fixes issue #88.
> 
> Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>

Reviewed-by: Caio Carrara <ccarrara at redhat.com>

> ---
>  static/css/base.css     | 11 +++++++++--
>  static/js/patchew.js    | 23 +++++++++++++++++++++++
>  www/templates/base.html |  7 +++++--
>  3 files changed, 37 insertions(+), 4 deletions(-)
> 
> diff --git a/static/css/base.css b/static/css/base.css
> index 9e04f50..a8c66c0 100644
> --- a/static/css/base.css
> +++ b/static/css/base.css
> @@ -65,14 +65,21 @@ h1, h2, h3, .h1, .h2, .h3 {
>      color: #666;
>  }
>  
> -.search-help {
> +.form-glyph-action {
>      color: #ccc;
> +    border: 0;
> +    background: none;
> +    padding: 0px 3px;
>  }
>  
> -.search-help:hover {
> +.form-glyph-action:hover {
>      color: #aaa;
>  }
>  
> +.form-glyph-action:active {
> +    color: #23527c;
> +    padding: 0px 3px;
> +
>  .search-form .form-group {
>      width: 600px;
>  }
> diff --git a/static/js/patchew.js b/static/js/patchew.js
> index a982de5..ce45abd 100644
> --- a/static/js/patchew.js
> +++ b/static/js/patchew.js
> @@ -20,3 +20,26 @@ function add_fixed_scroll_events()
>                            $(window).scrollTop() + 10 >= pre_fixed.offset().top + pre_fixed.height());
>      })
>  }
> +
> +function copy_to_clipboard(input) {
> +    if (input.value == '') {
> +        return;
> +    }
> +
> +    var origSelectionStart = input.selectionStart;
> +    var origSelectionEnd = input.selectionEnd;
> +    var origFocus = typeof document.activeElement.focus === "function" ? document.activeElement : null;
> +
> +    // copy the selection.  Note that the old selection is not restored unless
> +    // an error happens, to give the user feedback that the copy has happened.
> +    input.focus();
> +    input.setSelectionRange(0, input.value.length);
> +    try {
> +       document.execCommand("copy");
> +    } catch(e) {
> +        input.setSelectionRange(origSelectionStart, origSelectionEnd);
> +        if (origFocus) {
> +            origFocus.focus();
> +        }
> +    }
> +}
> diff --git a/www/templates/base.html b/www/templates/base.html
> index 89dabcf..850317f 100644
> --- a/www/templates/base.html
> +++ b/www/templates/base.html
> @@ -63,9 +63,12 @@ crossorigin="anonymous"/>
>          <ul class="nav navbar-nav navbar-right">
>              <form class="navbar-form navbar-left search-form" role="search" method="GET" action="{% url 'search' %}">
>                  <div class="form-group">
> -                    <input type="text" class="form-control" name="q" placeholder="Search" value="{{ search }}">
> +                    <input type="text" class="form-control" id="q" name="q" placeholder="Search" value="{{ search }}">
>                  </div>
> -                <a href="{% url "search_help" %}"><span class="glyphicon glyphicon-question-sign search-help"></span></a>
> +                <button type="button" class="form-glyph-action" aria-label="Copy to clipboard"
> +				onclick="copy_to_clipboard(document.getElementById('q')); return 0"><span
> +				class="fa fa-paste"></span></button>
> +                <a href="{% url "search_help" %}" class="form-glyph-action"><span class="glyphicon glyphicon-question-sign"></span></a>
>              </form>
>              <div class="btn-group user-button">
>                  {% if request.user.is_authenticated %}
> -- 
> 2.19.1
> 
> _______________________________________________
> Patchew-devel mailing list
> Patchew-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/patchew-devel

-- 
Caio Carrara
Software Engineer, Virt Team - Red Hat
ccarrara at redhat.com




More information about the Patchew-devel mailing list