# Atalho de teclado "Esc" não funcionando corretamente no modo de edição

**URL:** https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599
**Category:** Bug
**Tags:** keyboard-shortcuts
**Created:** [Dezembro 20, 2019, 11:05am UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599 "2019-12-20T11:05:40Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![jack2](https://avatars.discourse-cdn.com/v4/letter/j/ac91a4/32.png) [@jack2](https://meta.discourse.org/u/jack2)
#### Post date: [Dezembro 20, 2019, 11:05am UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599/1 "2019-12-20T11:05:40Z")

</div>

Como reproduzir:

1. Acesse um de seus posts e clique em Editar para abrir o editor. Não digite nada.
2. Pressione a tecla Esc =\> conforme o esperado, o editor desaparece completamente (ele não é minimizado, pois o post não foi modificado).
3. Atualize a página do navegador =\> o editor reaparece.

Na etapa 2, se você clicar no botão Cancelar em vez de pressionar a tecla Esc, o comportamento está correto, ou seja, o editor não reaparece após a atualização do navegador.

---

<div class="post-metadata">

### Author: ![Sirlupinwatson1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sirlupinwatson1/32/161293_2.png) [@Sirlupinwatson1](https://meta.discourse.org/u/Sirlupinwatson1)
#### Post date: [Dezembro 20, 2019, 1:19pm UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599/3 "2019-12-20T13:19:28Z")

</div>

@jack2

Acabei de fazer isso. Sim, faz exatamente o que você disse. Não tenho certeza se é um bug ou se deveria funcionar assim na verdade.

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [Março 29, 2020, 8:46am UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599/4 "2020-03-29T08:46:46Z")

</div>

Não consigo mais reproduzir isso. Você ainda consegue reproduzir isso em [try.discourse.org](http://try.discourse.org), por favor?

---

<div class="post-metadata">

### Author: ![jack2](https://avatars.discourse-cdn.com/v4/letter/j/ac91a4/32.png) [@jack2](https://meta.discourse.org/u/jack2)
#### Post date: [Março 29, 2020, 9:32am UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599/5 "2020-03-29T09:32:24Z")

</div>

Sim, acabei de reproduzir no [try.discourse.org](http://try.discourse.org).

Espere! É aleatório! Às vezes não ocorre.

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [Março 29, 2020, 9:34am UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599/6 "2020-03-29T09:34:38Z")

</div>

Você consegue encontrar uma reprodução consistente? Tenho uma ideia para uma correção, mas prefiro ter uma reprodução consistente. Por favor.

---

<div class="post-metadata">

### Author: ![jack2](https://avatars.discourse-cdn.com/v4/letter/j/ac91a4/32.png) [@jack2](https://meta.discourse.org/u/jack2)
#### Post date: [Março 29, 2020, 9:38am UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599/7 "2020-03-29T09:38:28Z")

</div>

Aqui está uma reprodução consistente:

1. Acesse uma de suas postagens e clique em Editar para abrir o editor. Não digite nada.
2. Aguarde alguns segundos, até que um símbolo de verificação apareça no canto inferior direito do editor  
 ![image](https://global.discourse-cdn.com/meta/original/3X/7/0/70d4ed4aac1dec0fd73375e5aad8fa5f4405fee6.png)
3. Pressione a tecla Esc =\> como esperado, o editor desaparece completamente (não é minimizado, pois a postagem não foi modificada).
4. Atualize a página do navegador =\> o editor reaparece.

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [Março 29, 2020, 9:39am UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599/8 "2020-03-29T09:39:26Z")

</div>

Legal! Ok, então minha ideia de correção provavelmente vai funcionar, muito obrigado ❤

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [Março 29, 2020, 12:39pm UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599/9 "2020-03-29T12:39:37Z")

</div>

Isso foi muito mais complicado do que o esperado. Acho que isso deve resolver:

> <https://github.com/discourse/discourse/pull/9305>
>
> This fix will also make sure the bootbox will be correctly shown when using esca…pe.
> 
> Test cases:
> \- edit post, wait for draft check, escape =\> should totally hide composer
> \- edit post, add a char, escape =\> should show bootbox, and reduce or hide depending on choice
> 
> Same behavior is expected when pressing on cancel.

Solicitei várias revisões e pode demorar um pouco para ser mesclado. Obrigado novamente pelo relatório detalhado 👍

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [Março 30, 2020, 6:44am UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599/10 "2020-03-30T06:44:36Z")

</div>

Atualização rápida: acabei de fechar o PR. A correção estava funcionando, mas vamos tentar resolver em um nível mais alto.

Pode levar algum tempo 🙂

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [Março 31, 2020, 12:51am UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599/11 "2020-03-31T00:51:52Z")

</div>

Fiz essa correção:

> <https://github.com/discourse/discourse/commit/a34711c23a58c991e44af2ff5e62f618107b244d>
>
> When editing a post we were incorrectly saving a draft prior to user typing
> 
> Thi…s caused a bloat in the amount of drafts saved per user and inconsistency
> around behavior of "escape" button.
> 
> It also lead to lots of warnings about draft conflicts when copying stuff
> between posts.
> 
> The code is improved to use promises more appropriately, however further
> changes are needed to clean up internals so methods consistently return
> promises.
> 
> Too many methods in the controller sometimes return a promise and sometimes
> an object. Long term the methods will become async and all of this will be
> corrected.

Esse arquivo é super complicado, @eviltrout… Mal posso esperar até termos suporte para `async`, porque um grande conjunto de métodos às vezes retorna uma promessa e às vezes retorna um objeto, o que torna muito difícil raciocinar sobre as coisas.

Por enquanto, introduzi algumas promessas e alternativas para que não salvemos um rascunho **imediatamente** após clicar no botão de editar. Isso também estava deixando o @supermathie maluco, pois tornava muito complicado e chato copiar texto de N respostas para a OP.

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [Março 31, 2020, 2:57am UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599/12 "2020-03-31T02:57:05Z")

</div>

> [@sam](#):
>
> Por enquanto, introduzi algumas promessas e alternativas para que não salvemos um rascunho **imediatamente** após clicar no botão de editar.

Isso explica _muito_ da frustração que eu estava tendo. 👏

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [Abril 4, 2020, 2:57am UTC](https://meta.discourse.org/t/esc-keyboard-shortcut-not-working-properly-in-edition-mode/136599/13 "2020-04-04T02:57:17Z")

</div>

Este tópico foi automaticamente fechado 4 dias após a última resposta. Novas respostas não são mais permitidas.
