[PATCH 1/6] editor: deactivate old text model before activating the new one
Philipp Brüschweiler
blei42 at gmail.com
Wed Jul 11 13:25:29 PDT 2012
---
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