[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