[PATCH 1/6] editor: deactivate old text model before activating the new one
Philipp Brüschweiler
blei42 at gmail.com
Wed Jul 18 11:07:46 PDT 2012
Ping.
With these patches (and some others) I managed to get a basic ibus
client working.
(https://github.com/Blei/ibus/tree/ibus-wayland/client/wayland)
Cheers,
Philipp
On Wed, Jul 11, 2012 at 10:25 PM, Philipp Brüschweiler <blei42 at gmail.com> wrote:
> ---
> clients/editor.c | 36 ++++++++++++++++++++++--------------
> 1 Datei geändert, 22 Zeilen hinzugefügt(+), 14 Zeilen entfernt(-)
>
> diff --git a/clients/editor.c b/clients/editor.c
> index 145ba20..9498d53 100644
> --- a/clients/editor.c
> +++ b/clients/editor.c
> @@ -20,6 +20,7 @@
> * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> */
>
> +#include <assert.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
> @@ -233,22 +234,29 @@ button_handler(struct widget *widget,
> x -= allocation.x;
> y -= allocation.y;
>
> - editor->entry->active = 0;
> - editor->editor->active = 0;
> -
> - editor->entry->active = rectangle_contains(&editor->entry->allocation, x, y);
> - editor->editor->active = rectangle_contains(&editor->editor->allocation, x, y);
> -
> - if (editor->entry->active) {
> - text_entry_activate(editor->entry);
> - } else {
> - text_entry_deactivate(editor->entry);
> - }
> - if (editor->editor->active) {
> - text_entry_activate(editor->editor);
> + int32_t activate_entry = rectangle_contains(&editor->entry->allocation, x, y);
> + int32_t activate_editor = rectangle_contains(&editor->editor->allocation, x, y);
> + assert(!(activate_entry && activate_editor));
> +
> + if (activate_entry) {
> + if (editor->editor->active)
> + text_entry_deactivate(editor->editor);
> + if (!editor->entry->active)
> + text_entry_activate(editor->entry);
> + } else if (activate_editor) {
> + if (editor->entry->active)
> + text_entry_deactivate(editor->entry);
> + if (!editor->editor->active)
> + text_entry_activate(editor->editor);
> } else {
> - text_entry_deactivate(editor->editor);
> + if (editor->entry->active)
> + text_entry_deactivate(editor->entry);
> + if (editor->editor->active)
> + text_entry_deactivate(editor->editor);
> }
> + editor->entry->active = activate_entry;
> + editor->editor->active = activate_editor;
> + assert(!(editor->entry->active && editor->editor->active));
>
> widget_schedule_redraw(widget);
> }
> --
> 1.7.11.1
>
More information about the wayland-devel
mailing list