* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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);
}