vkbd hints...

SVN revision: 35127
This commit is contained in:
Carsten Haitzler 2008-07-16 17:06:23 +00:00
parent f6dc37a244
commit 51c5110b2c
5 changed files with 95 additions and 11 deletions

View File

@ -411,21 +411,24 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map, int internal)
bd->client.netwm.fetch.state = 1;
}
}
/* loop to check for own atoms */
/* other misc atoms */
for (i = 0; i < at_num; i++)
{
/* loop to check for own atoms */
if (atoms[i] == E_ATOM_WINDOW_STATE)
{
bd->client.e.fetch.state = 1;
}
}
/* loop to check for qtopia atoms */
for (i = 0; i < at_num; i++)
{
/* loop to check for qtopia atoms */
if (atoms[i] == _QTOPIA_SOFT_MENU)
bd->client.qtopia.fetch.soft_menu = 1;
else if (atoms[i] == _QTOPIA_SOFT_MENUS)
bd->client.qtopia.fetch.soft_menus = 1;
/* loop to check for vkbd atoms */
else if (atoms[i] == _E_VIRTUAL_KEYBOARD_STATE)
bd->client.vkbd.fetch.state = 1;
else if (atoms[i] == _E_VIRTUAL_KEYBOARD)
bd->client.vkbd.fetch.vkbd = 1;
}
free(atoms);
}
@ -3998,6 +4001,16 @@ _e_border_cb_window_property(void *data, int ev_type, void *ev)
bd->client.qtopia.fetch.soft_menus = 1;
bd->changed = 1;
}
else if (e->atom == _E_VIRTUAL_KEYBOARD_STATE)
{
bd->client.vkbd.fetch.state = 1;
bd->changed = 1;
}
else if (e->atom == _E_VIRTUAL_KEYBOARD)
{
bd->client.vkbd.fetch.vkbd = 1;
bd->changed = 1;
}
/*
else if (e->atom == ECORE_X_ATOM_NET_WM_USER_TIME)
{
@ -5492,6 +5505,18 @@ _e_border_eval(E_Border *bd)
bd->client.qtopia.fetch.soft_menus = 0;
rem_change = 1;
}
if (bd->client.vkbd.fetch.state)
{
e_hints_window_virtual_keyboard_state_get(bd);
bd->client.vkbd.fetch.state = 0;
rem_change = 1;
}
if (bd->client.vkbd.fetch.vkbd)
{
e_hints_window_virtual_keyboard_get(bd);
bd->client.vkbd.fetch.vkbd = 0;
rem_change = 1;
}
if (bd->changes.shape)
{
Ecore_X_Rectangle *rects;
@ -5856,6 +5881,7 @@ _e_border_eval(E_Border *bd)
}
}
_e_border_hook_call(E_BORDER_HOOK_EVAL_PRE_POST_FETCH, bd);
_e_border_hook_call(E_BORDER_HOOK_EVAL_POST_FETCH, bd);
_e_border_hook_call(E_BORDER_HOOK_EVAL_PRE_BORDER_ASSIGN, bd);

View File

@ -81,6 +81,7 @@ typedef enum _E_Window_Placement
typedef enum _E_Border_Hook_Point
{
E_BORDER_HOOK_EVAL_PRE_FETCH,
E_BORDER_HOOK_EVAL_PRE_POST_FETCH,
E_BORDER_HOOK_EVAL_POST_FETCH,
E_BORDER_HOOK_EVAL_PRE_BORDER_ASSIGN,
E_BORDER_HOOK_EVAL_POST_BORDER_ASSIGN,
@ -347,6 +348,14 @@ struct _E_Border
unsigned char soft_menu : 1;
unsigned char soft_menus : 1;
} qtopia;
struct {
struct {
unsigned char state : 1;
unsigned char vkbd : 1;
} fetch;
Ecore_X_Atom state;
unsigned char vkbd : 1;
} vkbd;
Ecore_X_Window_Attributes initial_attributes;
} client;
@ -407,7 +416,9 @@ struct _E_Border
unsigned int lock_focus_in : 1; /*DONE*/
unsigned int lock_focus_out : 1; /*DONE*/
unsigned int lock_life : 1; /*DONE*/
unsigned int internal : 1;
unsigned int stolen : 1;
Ecore_Evas *internal_ecore_evas;

View File

@ -3,8 +3,14 @@
*/
#include "e.h"
Ecore_X_Atom _QTOPIA_SOFT_MENU = 0;
Ecore_X_Atom _QTOPIA_SOFT_MENUS = 0;
EAPI Ecore_X_Atom _QTOPIA_SOFT_MENU = 0;
EAPI Ecore_X_Atom _QTOPIA_SOFT_MENUS = 0;
EAPI Ecore_X_Atom _E_VIRTUAL_KEYBOARD = 0;
EAPI Ecore_X_Atom _E_VIRTUAL_KEYBOARD_STATE = 0;
EAPI Ecore_X_Atom _E_VIRTUAL_KEYBOARD_OFF = 0;
EAPI Ecore_X_Atom _E_VIRTUAL_KEYBOARD_ON = 0;
EAPI Ecore_X_Atom _E_VIRTUAL_KEYBOARD_ALPHA = 0;
EAPI Ecore_X_Atom _E_VIRTUAL_KEYBOARD_NUMERIC = 0;
static Ecore_X_Atom gnome_atom = 0;
static Ecore_X_Atom enlightenment_comms = 0;
@ -20,16 +26,28 @@ e_hints_init(void)
"_QTOPIA_SOFT_MENUS",
"GNOME_SM_PROXY",
"ENLIGHTENMENT_COMMS",
"ENLIGHTENMENT_VERSION"
"ENLIGHTENMENT_VERSION",
"_E_VIRTUAL_KEYBOARD",
"_E_VIRTUAL_KEYBOARD_STATE",
"_E_VIRTUAL_KEYBOARD_OFF",
"_E_VIRTUAL_KEYBOARD_ON",
"_E_VIRTUAL_KEYBOARD_ALPHA",
"_E_VIRTUAL_KEYBOARD_NUMERIC"
};
Ecore_X_Atom atoms[5];
Ecore_X_Atom atoms[11];
ecore_x_atoms_get(atom_names, 5, atoms);
ecore_x_atoms_get(atom_names, 11, atoms);
_QTOPIA_SOFT_MENU = atoms[0];
_QTOPIA_SOFT_MENUS = atoms[1];
gnome_atom = atoms[2];
enlightenment_comms = atoms[3];
enlightenment_version = atoms[4];
_E_VIRTUAL_KEYBOARD = atoms[5];
_E_VIRTUAL_KEYBOARD_STATE = atoms[6];
_E_VIRTUAL_KEYBOARD_OFF = atoms[7];
_E_VIRTUAL_KEYBOARD_ON = atoms[8];
_E_VIRTUAL_KEYBOARD_ALPHA = atoms[9];
_E_VIRTUAL_KEYBOARD_NUMERIC = atoms[10];
roots = ecore_x_window_root_list(&num);
if (roots)
@ -1379,6 +1397,25 @@ e_hints_window_qtopia_soft_menus_get(E_Border *bd)
bd->client.qtopia.soft_menus = 0;
}
EAPI void
e_hints_window_virtual_keyboard_state_get(E_Border *bd)
{
if (!ecore_x_window_prop_atom_get(bd->client.win, _E_VIRTUAL_KEYBOARD_STATE,
&(bd->client.vkbd.state), 1))
bd->client.vkbd.state = 0;
}
EAPI void
e_hints_window_virtual_keyboard_get(E_Border *bd)
{
unsigned int val;
if (ecore_x_window_prop_card32_get(bd->client.win, _E_VIRTUAL_KEYBOARD, &val, 1))
bd->client.vkbd.vkbd = val;
else
bd->client.vkbd.vkbd = 0;
}
EAPI void
e_hints_openoffice_gnome_fake(Ecore_X_Window root)
{

View File

@ -48,11 +48,20 @@ EAPI void e_hints_window_e_state_get(E_Border *bd);
EAPI void e_hints_window_qtopia_soft_menu_get(E_Border *bd);
EAPI void e_hints_window_qtopia_soft_menus_get(E_Border *bd);
EAPI void e_hints_window_virtual_keyboard_state_get(E_Border *bd);
EAPI void e_hints_window_virtual_keyboard_get(E_Border *bd);
EAPI void e_hints_openoffice_gnome_fake(Ecore_X_Window root);
EAPI void e_hints_openoffice_kde_fake(Ecore_X_Window root);
extern EAPI Ecore_X_Atom _QTOPIA_SOFT_MENU;
extern EAPI Ecore_X_Atom _QTOPIA_SOFT_MENUS;
extern EAPI Ecore_X_Atom _E_VIRTUAL_KEYBOARD;
extern EAPI Ecore_X_Atom _E_VIRTUAL_KEYBOARD_STATE;
extern EAPI Ecore_X_Atom _E_VIRTUAL_KEYBOARD_OFF;
extern EAPI Ecore_X_Atom _E_VIRTUAL_KEYBOARD_ON;
extern EAPI Ecore_X_Atom _E_VIRTUAL_KEYBOARD_ALPHA;
extern EAPI Ecore_X_Atom _E_VIRTUAL_KEYBOARD_NUMERIC;
#endif
#endif

View File

@ -79,12 +79,13 @@ e_init_show(void)
if (version) ver = strdup(e_util_filename_escape(version));
else ver = strdup("XvX");
snprintf(buf, sizeof(buf), "%s/enlightenment_init %s %i %i %s %s",
snprintf(buf, sizeof(buf), "%s/enlightenment_init \'%s\' \'%i\' \'%i\' \'%s\' \'%s\'",
e_prefix_bin_get(),
theme,
e_canvas_engine_decide(e_config->evas_engine_init),
e_config->font_hinting,
tit, ver);
printf("RUN INIT: %s\n", buf);
free(theme);
free(tit);
free(ver);