shift-tab to go back

SVN revision: 16910
This commit is contained in:
Carsten Haitzler 2005-09-24 10:29:31 +00:00
parent ff9208425a
commit f43a1bec25
6 changed files with 41 additions and 22 deletions

View File

@ -72,7 +72,8 @@ e_pan.h \
e_dialog.h \
e_configure.h \
e_about.h \
e_theme_about.h
e_theme_about.h \
e_apps_cache.h
enlightenment_SOURCES = \
e_main.c \
@ -133,6 +134,7 @@ e_dialog.c \
e_configure.c \
e_about.c \
e_theme_about.c \
e_apps_cache.c \
$(ENLIGHTENMENTHEADERS)
enlightenment_LDFLAGS = -export-dynamic @e_libs@ @x_libs@ @dlopen_libs@ @cf_libs@

4
src/bin/e_apps_cache.c Normal file
View File

@ -0,0 +1,4 @@
/*
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
#include "e.h"

11
src/bin/e_apps_cache.h Normal file
View File

@ -0,0 +1,11 @@
/*
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
#ifdef E_TYPEDEFS
#else
#ifndef E_APPS_CACHE_H
#define E_APPS_CAHCE_H
#endif
#endif

View File

@ -31,6 +31,7 @@ e_dialog_new(E_Container *con)
E_Dialog *dia;
E_Manager *man;
Evas_Object *o;
Evas_Modifier_Mask mask;
if (!con)
{
@ -76,9 +77,15 @@ e_dialog_new(E_Container *con)
o = evas_object_rectangle_add(e_win_evas_get(dia->win));
dia->event_object = o;
evas_object_key_grab(o, "Tab", 0, 0, 0);
evas_object_key_grab(o, "Return", 0, 0, 0);
evas_object_key_grab(o, "space", 0, 0, 0);
mask = 0;
evas_object_key_grab(o, "Tab", mask, ~mask, 0);
mask = evas_key_modifier_mask_get(e_win_evas_get(dia->win), "Shift");
evas_object_key_grab(o, "Tab", mask, ~mask, 0);
mask = 0;
evas_object_key_grab(o, "Return", mask, ~mask, 0);
mask = 0;
evas_object_key_grab(o, "space", mask, ~mask, 0);
evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN, _e_dialog_cb_key_down, dia);
dia->focused = NULL;
@ -252,28 +259,22 @@ _e_dialog_cb_key_down(void *data, Evas *e, Evas_Object *obj, void *event)
{
if (dia->focused && dia->buttons)
{
if (dia->focused->next)
E_Dialog_Button *db;
db = dia->focused->data;
edje_object_signal_emit(db->obj, "unfocus", "");
if (evas_key_modifier_is_set(evas_key_modifier_get(e_win_evas_get(dia->win)), "Shift"))
{
E_Dialog_Button *db;
db = dia->focused->data;
edje_object_signal_emit(db->obj, "unfocus", "");
dia->focused = dia->focused->next;
db = dia->focused->data;
edje_object_signal_emit(db->obj, "focus", "");
if (dia->focused->prev) dia->focused = dia->focused->prev;
else dia->focused = evas_list_last(dia->buttons);
}
else
{
E_Dialog_Button *db;
db = dia->focused->data;
edje_object_signal_emit(db->obj, "unfocus", "");
dia->focused = dia->buttons;
db = evas_list_data(dia->focused);
edje_object_signal_emit(db->obj, "focus", "");
if (dia->focused->next) dia->focused = dia->focused->next;
else dia->focused = dia->buttons;
}
db = evas_list_data(dia->focused);
edje_object_signal_emit(db->obj, "focus", "");
}
else
{

View File

@ -59,3 +59,4 @@
#include "e_configure.h"
#include "e_about.h"
#include "e_theme_about.h"
#include "e_apps_cache.h"

View File

@ -480,7 +480,7 @@ _e_manager_cb_key_down(void *data, int ev_type __UNUSED__, void *ev)
man = data;
e = ev;
printf("KEY %s [win=%x event_win=%x]\n", e->keyname, e->win, e->event_win);
// printf("KEY %s [win=%x event_win=%x]\n", e->keyname, e->win, e->event_win);
if (e->event_win != man->root) return 1;
if (e_bindings_key_down_event_handle(E_BINDING_CONTEXT_MANAGER, E_OBJECT(man), ev))
return 0;