forked from enlightenment/enlightenment
fix several bugs (cursors for example)... found some more... :)
SVN revision: 19555
This commit is contained in:
parent
1625201009
commit
eff5eeeac7
10
TODO
10
TODO
|
@ -8,9 +8,12 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
BUGS / FIXES
|
BUGS / FIXES
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
* BUG: mouse pointer changes are buggy - white box for x curosrs the first
|
* BUG: fullscreen does not respect min/max window size
|
||||||
time that cursor is used. also sometimes forgets what cursor to use and
|
* BUG: changing border from shaped to not shaped produces shadow bugs
|
||||||
was being used etc.
|
* BUG: xdaliclock -transparent doesnt use shaped border (not handling shape
|
||||||
|
change later)
|
||||||
|
* BUG: if a user selects a border the border should not just shange based on
|
||||||
|
properties. if user selects a border in border selector, then lock border
|
||||||
* BUG: if you iconify a window and while iconified the window unmaps
|
* BUG: if you iconify a window and while iconified the window unmaps
|
||||||
(rhythmbox does this a lot apparently) e doesnt realise and still thinks
|
(rhythmbox does this a lot apparently) e doesnt realise and still thinks
|
||||||
its iconified.
|
its iconified.
|
||||||
|
@ -33,7 +36,6 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
ESSENTIAL FEATURES
|
ESSENTIAL FEATURES
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
* add fullscreen (zoom) support (e16 xvidmode or xrandr style)
|
|
||||||
* implement thees maximise/fullscreen modes:
|
* implement thees maximise/fullscreen modes:
|
||||||
Which of these should be different modes, and which should be options for
|
Which of these should be different modes, and which should be options for
|
||||||
a mode? i think they all should be distinct actions of their own bound
|
a mode? i think they all should be distinct actions of their own bound
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -413,4 +413,8 @@ e17_ilist_bg1.png \
|
||||||
e17_slider_bt0.png \
|
e17_slider_bt0.png \
|
||||||
e17_slider_bt1.png \
|
e17_slider_bt1.png \
|
||||||
e17_slider_bt_glow.png \
|
e17_slider_bt_glow.png \
|
||||||
e17_entry_cursor.png
|
e17_entry_cursor.png \
|
||||||
|
e17_border1b.png \
|
||||||
|
e17_border3b.png \
|
||||||
|
e17_border5b.png \
|
||||||
|
e17_border7b.png
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 367 B |
Binary file not shown.
After Width: | Height: | Size: 212 B |
Binary file not shown.
After Width: | Height: | Size: 185 B |
Binary file not shown.
After Width: | Height: | Size: 200 B |
|
@ -37,6 +37,7 @@ e_about_new(E_Container *con)
|
||||||
}
|
}
|
||||||
e_win_delete_callback_set(about->win, _e_about_cb_delete);
|
e_win_delete_callback_set(about->win, _e_about_cb_delete);
|
||||||
about->win->data = about;
|
about->win->data = about;
|
||||||
|
e_win_dialog_set(about->win, 1);
|
||||||
e_win_name_class_set(about->win, "E", "_about");
|
e_win_name_class_set(about->win, "E", "_about");
|
||||||
e_win_title_set(about->win, _("About Enlightenment"));
|
e_win_title_set(about->win, _("About Enlightenment"));
|
||||||
|
|
||||||
|
|
|
@ -4759,42 +4759,6 @@ _e_border_eval(E_Border *bd)
|
||||||
}
|
}
|
||||||
bd->client.icccm.fetch.protocol = 0;
|
bd->client.icccm.fetch.protocol = 0;
|
||||||
}
|
}
|
||||||
if (bd->client.mwm.fetch.hints)
|
|
||||||
{
|
|
||||||
int pb;
|
|
||||||
|
|
||||||
bd->client.mwm.exists =
|
|
||||||
ecore_x_mwm_hints_get(bd->client.win,
|
|
||||||
&bd->client.mwm.func,
|
|
||||||
&bd->client.mwm.decor,
|
|
||||||
&bd->client.mwm.input);
|
|
||||||
pb = bd->client.mwm.borderless;
|
|
||||||
bd->client.mwm.borderless = 0;
|
|
||||||
if (bd->client.mwm.exists)
|
|
||||||
{
|
|
||||||
// printf("##- MWM HINTS SET 0x%x!\n", bd->client.win);
|
|
||||||
if ((!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_ALL)) &&
|
|
||||||
(!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_TITLE)) &&
|
|
||||||
(!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_BORDER)))
|
|
||||||
bd->client.mwm.borderless = 1;
|
|
||||||
}
|
|
||||||
if (bd->client.mwm.borderless != pb)
|
|
||||||
{
|
|
||||||
if (((!bd->lock_border) || (!bd->client.border.name))
|
|
||||||
&& (!bd->shaded))
|
|
||||||
{
|
|
||||||
if (bd->client.border.name) evas_stringshare_del(bd->client.border.name);
|
|
||||||
if (bd->client.mwm.borderless)
|
|
||||||
bd->client.border.name = evas_stringshare_add("borderless");
|
|
||||||
else
|
|
||||||
bd->client.border.name = evas_stringshare_add("default");
|
|
||||||
// if (bd->client.mwm.borderless)
|
|
||||||
// printf("client %s borderless\n", bd->client.icccm.title);
|
|
||||||
bd->client.border.changed = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bd->client.mwm.fetch.hints = 0;
|
|
||||||
}
|
|
||||||
if (bd->client.icccm.fetch.transient_for)
|
if (bd->client.icccm.fetch.transient_for)
|
||||||
{
|
{
|
||||||
bd->client.icccm.transient_for = ecore_x_icccm_transient_for_get(bd->client.win);
|
bd->client.icccm.transient_for = ecore_x_icccm_transient_for_get(bd->client.win);
|
||||||
|
@ -4810,12 +4774,6 @@ _e_border_eval(E_Border *bd)
|
||||||
bd->client.icccm.window_role = ecore_x_icccm_window_role_get(bd->client.win);
|
bd->client.icccm.window_role = ecore_x_icccm_window_role_get(bd->client.win);
|
||||||
bd->client.icccm.fetch.window_role = 0;
|
bd->client.icccm.fetch.window_role = 0;
|
||||||
}
|
}
|
||||||
if (bd->client.netwm.update.state)
|
|
||||||
{
|
|
||||||
e_hints_window_state_set(bd);
|
|
||||||
bd->client.netwm.update.state = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bd->changes.shape)
|
if (bd->changes.shape)
|
||||||
{
|
{
|
||||||
Ecore_X_Rectangle *rects;
|
Ecore_X_Rectangle *rects;
|
||||||
|
@ -4858,6 +4816,46 @@ _e_border_eval(E_Border *bd)
|
||||||
bd->client.shaped = 0;
|
bd->client.shaped = 0;
|
||||||
bd->need_shape_merge = 1;
|
bd->need_shape_merge = 1;
|
||||||
}
|
}
|
||||||
|
if (bd->client.mwm.fetch.hints)
|
||||||
|
{
|
||||||
|
int pb;
|
||||||
|
|
||||||
|
bd->client.mwm.exists =
|
||||||
|
ecore_x_mwm_hints_get(bd->client.win,
|
||||||
|
&bd->client.mwm.func,
|
||||||
|
&bd->client.mwm.decor,
|
||||||
|
&bd->client.mwm.input);
|
||||||
|
pb = bd->client.mwm.borderless;
|
||||||
|
bd->client.mwm.borderless = 0;
|
||||||
|
if (bd->client.mwm.exists)
|
||||||
|
{
|
||||||
|
// printf("##- MWM HINTS SET 0x%x!\n", bd->client.win);
|
||||||
|
if ((!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_ALL)) &&
|
||||||
|
(!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_TITLE)) &&
|
||||||
|
(!(bd->client.mwm.decor & ECORE_X_MWM_HINT_DECOR_BORDER)))
|
||||||
|
bd->client.mwm.borderless = 1;
|
||||||
|
}
|
||||||
|
if (bd->client.mwm.borderless != pb)
|
||||||
|
{
|
||||||
|
if (((!bd->lock_border) || (!bd->client.border.name))
|
||||||
|
&& (!bd->shaded))
|
||||||
|
{
|
||||||
|
if (bd->client.border.name)
|
||||||
|
evas_stringshare_del(bd->client.border.name);
|
||||||
|
if (bd->client.mwm.borderless)
|
||||||
|
bd->client.border.name = evas_stringshare_add("borderless");
|
||||||
|
else
|
||||||
|
bd->client.border.name = evas_stringshare_add("default");
|
||||||
|
bd->client.border.changed = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bd->client.mwm.fetch.hints = 0;
|
||||||
|
}
|
||||||
|
if (bd->client.netwm.update.state)
|
||||||
|
{
|
||||||
|
e_hints_window_state_set(bd);
|
||||||
|
bd->client.netwm.update.state = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (bd->new_client)
|
if (bd->new_client)
|
||||||
{
|
{
|
||||||
|
@ -4870,6 +4868,40 @@ _e_border_eval(E_Border *bd)
|
||||||
// e_object_breadcrumb_add(E_OBJECT(bd), "border_add_event");
|
// e_object_breadcrumb_add(E_OBJECT(bd), "border_add_event");
|
||||||
ecore_event_add(E_EVENT_BORDER_ADD, ev, _e_border_event_border_add_free, NULL);
|
ecore_event_add(E_EVENT_BORDER_ADD, ev, _e_border_event_border_add_free, NULL);
|
||||||
|
|
||||||
|
if (((!bd->lock_border) || (!bd->client.border.name))
|
||||||
|
&& (!bd->shaded))
|
||||||
|
{
|
||||||
|
if (bd->client.border.name)
|
||||||
|
evas_stringshare_del(bd->client.border.name);
|
||||||
|
if (bd->client.mwm.borderless)
|
||||||
|
bd->client.border.name = evas_stringshare_add("borderless");
|
||||||
|
else if (((bd->client.icccm.transient_for != 0) ||
|
||||||
|
(bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG)) &&
|
||||||
|
(bd->client.icccm.min_w == bd->client.icccm.max_w) &&
|
||||||
|
(bd->client.icccm.min_h == bd->client.icccm.max_h))
|
||||||
|
bd->client.border.name = evas_stringshare_add("noresize_dialog");
|
||||||
|
else if ((bd->client.icccm.min_w == bd->client.icccm.max_w) &&
|
||||||
|
(bd->client.icccm.min_h == bd->client.icccm.max_h))
|
||||||
|
bd->client.border.name = evas_stringshare_add("noresize");
|
||||||
|
else if (bd->client.shaped)
|
||||||
|
bd->client.border.name = evas_stringshare_add("shaped");
|
||||||
|
else if ((!bd->client.icccm.accepts_focus) &&
|
||||||
|
(!bd->client.icccm.take_focus))
|
||||||
|
bd->client.border.name = evas_stringshare_add("nofocus");
|
||||||
|
else if (bd->client.icccm.urgent)
|
||||||
|
bd->client.border.name = evas_stringshare_add("urgent");
|
||||||
|
else if ((bd->client.icccm.transient_for != 0) ||
|
||||||
|
(bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG))
|
||||||
|
bd->client.border.name = evas_stringshare_add("dialog");
|
||||||
|
else if (bd->client.netwm.state.modal)
|
||||||
|
bd->client.border.name = evas_stringshare_add("modal");
|
||||||
|
else if ((bd->client.netwm.state.skip_taskbar) ||
|
||||||
|
(bd->client.netwm.state.skip_pager))
|
||||||
|
bd->client.border.name = evas_stringshare_add("skipped");
|
||||||
|
else
|
||||||
|
bd->client.border.name = evas_stringshare_add("default");
|
||||||
|
bd->client.border.changed = 1;
|
||||||
|
}
|
||||||
if (!bd->remember)
|
if (!bd->remember)
|
||||||
{
|
{
|
||||||
rem = e_remember_find(bd);
|
rem = e_remember_find(bd);
|
||||||
|
@ -5704,7 +5736,8 @@ _e_border_eval(E_Border *bd)
|
||||||
|
|
||||||
if ((!bd->placed) && (!bd->re_manage) &&
|
if ((!bd->placed) && (!bd->re_manage) &&
|
||||||
(e_config->window_placement_policy == E_WINDOW_PLACEMENT_MANUAL) &&
|
(e_config->window_placement_policy == E_WINDOW_PLACEMENT_MANUAL) &&
|
||||||
(bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DIALOG) &&
|
(!((bd->client.icccm.transient_for != 0) ||
|
||||||
|
(bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DIALOG))) &&
|
||||||
(!move) && (!resize))
|
(!move) && (!resize))
|
||||||
{
|
{
|
||||||
/* Set this window into moving state */
|
/* Set this window into moving state */
|
||||||
|
|
|
@ -203,18 +203,18 @@ struct _E_Border
|
||||||
int num_icons;
|
int num_icons;
|
||||||
unsigned int user_time;
|
unsigned int user_time;
|
||||||
struct {
|
struct {
|
||||||
int left;
|
int left;
|
||||||
int right;
|
int right;
|
||||||
int top;
|
int top;
|
||||||
int bottom;
|
int bottom;
|
||||||
int left_start_y;
|
int left_start_y;
|
||||||
int left_end_y;
|
int left_end_y;
|
||||||
int right_start_y;
|
int right_start_y;
|
||||||
int right_end_y;
|
int right_end_y;
|
||||||
int top_start_x;
|
int top_start_x;
|
||||||
int top_end_x;
|
int top_end_x;
|
||||||
int bottom_start_x;
|
int bottom_start_x;
|
||||||
int bottom_end_x;
|
int bottom_end_x;
|
||||||
} strut;
|
} strut;
|
||||||
unsigned char ping : 1;
|
unsigned char ping : 1;
|
||||||
struct {
|
struct {
|
||||||
|
@ -260,7 +260,7 @@ struct _E_Border
|
||||||
} fetch;
|
} fetch;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
unsigned char state : 1;
|
unsigned char state : 1;
|
||||||
} update;
|
} update;
|
||||||
} netwm;
|
} netwm;
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ e_configure_show(E_Container *con)
|
||||||
|
|
||||||
e_win_title_set(eco->win, _("Enlightenment Configuration"));
|
e_win_title_set(eco->win, _("Enlightenment Configuration"));
|
||||||
e_win_name_class_set(eco->win, "E", "_configure");
|
e_win_name_class_set(eco->win, "E", "_configure");
|
||||||
|
e_win_dialog_set(eco->win, 1);
|
||||||
eco->evas = e_win_evas_get(eco->win);
|
eco->evas = e_win_evas_get(eco->win);
|
||||||
e_win_delete_callback_set(eco->win, _e_configure_cb_del_req);
|
e_win_delete_callback_set(eco->win, _e_configure_cb_del_req);
|
||||||
e_win_resize_callback_set(eco->win, _e_configure_cb_resize);
|
e_win_resize_callback_set(eco->win, _e_configure_cb_resize);
|
||||||
|
|
|
@ -39,10 +39,10 @@ e_dialog_new(E_Container *con)
|
||||||
free(dia);
|
free(dia);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ecore_x_netwm_window_type_set(dia->win->evas_win, ECORE_X_WINDOW_TYPE_DIALOG);
|
|
||||||
e_win_delete_callback_set(dia->win, _e_dialog_cb_delete);
|
e_win_delete_callback_set(dia->win, _e_dialog_cb_delete);
|
||||||
e_win_resize_callback_set(dia->win, _e_dialog_cb_resize);
|
e_win_resize_callback_set(dia->win, _e_dialog_cb_resize);
|
||||||
dia->win->data = dia;
|
dia->win->data = dia;
|
||||||
|
e_win_dialog_set(dia->win, 1);
|
||||||
e_win_name_class_set(dia->win, "E", "_dialog");
|
e_win_name_class_set(dia->win, "E", "_dialog");
|
||||||
o = edje_object_add(e_win_evas_get(dia->win));
|
o = edje_object_add(e_win_evas_get(dia->win));
|
||||||
dia->bg_object = o;
|
dia->bg_object = o;
|
||||||
|
|
|
@ -168,13 +168,18 @@ e_int_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_
|
||||||
"widgets/border/default/stacking"),
|
"widgets/border/default/stacking"),
|
||||||
"widgets/border/default/stacking");
|
"widgets/border/default/stacking");
|
||||||
|
|
||||||
mi = e_menu_item_new(m);
|
if (!(((bd->client.icccm.min_w == bd->client.icccm.max_w) &&
|
||||||
e_menu_item_label_set(mi, _("Maximize"));
|
(bd->client.icccm.min_h == bd->client.icccm.max_h)) ||
|
||||||
e_menu_item_submenu_set(mi, bd->border_maximize_menu);
|
(bd->lock_user_maximize)))
|
||||||
e_menu_item_icon_edje_set(mi,
|
{
|
||||||
(char *)e_theme_edje_file_get("base/theme/borders",
|
mi = e_menu_item_new(m);
|
||||||
"widgets/border/default/maximize"),
|
e_menu_item_label_set(mi, _("Maximize"));
|
||||||
"widgets/border/default/maximize");
|
e_menu_item_submenu_set(mi, bd->border_maximize_menu);
|
||||||
|
e_menu_item_icon_edje_set(mi,
|
||||||
|
(char *)e_theme_edje_file_get("base/theme/borders",
|
||||||
|
"widgets/border/default/maximize"),
|
||||||
|
"widgets/border/default/maximize");
|
||||||
|
}
|
||||||
|
|
||||||
if ((!bd->lock_user_shade) && (!(!strcmp("borderless", bd->client.border.name))))
|
if ((!bd->lock_user_shade) && (!(!strcmp("borderless", bd->client.border.name))))
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,10 +42,6 @@ static void _e_int_menus_clients_item_cb (void *data, E_Menu *m, E_Menu_Item
|
||||||
static void _e_int_menus_clients_cleanup_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
static void _e_int_menus_clients_cleanup_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||||
static void _e_int_menus_desktops_pre_cb (void *data, E_Menu *m);
|
static void _e_int_menus_desktops_pre_cb (void *data, E_Menu *m);
|
||||||
static void _e_int_menus_desktops_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
static void _e_int_menus_desktops_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||||
static void _e_int_menus_desktops_row_add_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
|
||||||
static void _e_int_menus_desktops_row_del_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
|
||||||
static void _e_int_menus_desktops_col_add_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
|
||||||
static void _e_int_menus_desktops_col_del_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
|
||||||
static void _e_int_menus_gadgets_pre_cb (void *data, E_Menu *m);
|
static void _e_int_menus_gadgets_pre_cb (void *data, E_Menu *m);
|
||||||
static void _e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi);
|
static void _e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||||
static void _e_int_menus_themes_pre_cb (void *data, E_Menu *m);
|
static void _e_int_menus_themes_pre_cb (void *data, E_Menu *m);
|
||||||
|
@ -523,8 +519,6 @@ _e_int_menus_desktops_pre_cb(void *data, E_Menu *m)
|
||||||
|
|
||||||
e_menu_pre_activate_callback_set(m, NULL, NULL);
|
e_menu_pre_activate_callback_set(m, NULL, NULL);
|
||||||
root = e_menu_root_get(m);
|
root = e_menu_root_get(m);
|
||||||
/* Get the desktop list for this zone */
|
|
||||||
/* FIXME: Menu code needs to determine what zone menu was clicked in */
|
|
||||||
if ((root) && (root->zone))
|
if ((root) && (root->zone))
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -544,66 +538,6 @@ _e_int_menus_desktops_pre_cb(void *data, E_Menu *m)
|
||||||
e_menu_item_callback_set(mi, _e_int_menus_desktops_item_cb, desk);
|
e_menu_item_callback_set(mi, _e_int_menus_desktops_item_cb, desk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mi = e_menu_item_new(m);
|
|
||||||
e_menu_item_separator_set(mi, 1);
|
|
||||||
|
|
||||||
mi = e_menu_item_new(m);
|
|
||||||
e_menu_item_label_set(mi, _("New Row of Desktops"));
|
|
||||||
e_menu_item_callback_set(mi, _e_int_menus_desktops_row_add_cb, NULL);
|
|
||||||
|
|
||||||
mi = e_menu_item_new(m);
|
|
||||||
e_menu_item_label_set(mi, _("Remove Row of Desktops"));
|
|
||||||
e_menu_item_callback_set(mi, _e_int_menus_desktops_row_del_cb, NULL);
|
|
||||||
|
|
||||||
mi = e_menu_item_new(m);
|
|
||||||
e_menu_item_label_set(mi, _("New Column of Desktops"));
|
|
||||||
e_menu_item_callback_set(mi, _e_int_menus_desktops_col_add_cb, NULL);
|
|
||||||
|
|
||||||
mi = e_menu_item_new(m);
|
|
||||||
e_menu_item_label_set(mi, _("Remove Column of Desktops"));
|
|
||||||
e_menu_item_callback_set(mi, _e_int_menus_desktops_col_del_cb, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* FIXME: Use the zone the menu was clicked in */
|
|
||||||
static void
|
|
||||||
_e_int_menus_desktops_row_add_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
||||||
{
|
|
||||||
E_Menu *root;
|
|
||||||
|
|
||||||
root = e_menu_root_get(m);
|
|
||||||
if (root)
|
|
||||||
e_desk_row_add(root->zone);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_e_int_menus_desktops_row_del_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
||||||
{
|
|
||||||
E_Menu *root;
|
|
||||||
|
|
||||||
root = e_menu_root_get(m);
|
|
||||||
if (root)
|
|
||||||
e_desk_row_remove(root->zone);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_e_int_menus_desktops_col_add_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
||||||
{
|
|
||||||
E_Menu *root;
|
|
||||||
|
|
||||||
root = e_menu_root_get(m);
|
|
||||||
if (root)
|
|
||||||
e_desk_col_add(root->zone);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_e_int_menus_desktops_col_del_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
||||||
{
|
|
||||||
E_Menu *root;
|
|
||||||
|
|
||||||
root = e_menu_root_get(m);
|
|
||||||
if (root)
|
|
||||||
e_desk_col_remove(root->zone);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -8,6 +8,7 @@ static void _e_manager_free(E_Manager *man);
|
||||||
|
|
||||||
static int _e_manager_cb_window_show_request(void *data, int ev_type, void *ev);
|
static int _e_manager_cb_window_show_request(void *data, int ev_type, void *ev);
|
||||||
static int _e_manager_cb_window_configure(void *data, int ev_type, void *ev);
|
static int _e_manager_cb_window_configure(void *data, int ev_type, void *ev);
|
||||||
|
static int _e_manager_cb_key_up(void *data, int ev_type, void *ev);
|
||||||
static int _e_manager_cb_key_down(void *data, int ev_type, void *ev);
|
static int _e_manager_cb_key_down(void *data, int ev_type, void *ev);
|
||||||
static int _e_manager_cb_frame_extents_request(void *data, int ev_type, void *ev);
|
static int _e_manager_cb_frame_extents_request(void *data, int ev_type, void *ev);
|
||||||
static int _e_manager_cb_ping(void *data, int ev_type, void *ev);
|
static int _e_manager_cb_ping(void *data, int ev_type, void *ev);
|
||||||
|
@ -115,6 +116,8 @@ e_manager_new(Ecore_X_Window root, int num)
|
||||||
if (h) man->handlers = evas_list_append(man->handlers, h);
|
if (h) man->handlers = evas_list_append(man->handlers, h);
|
||||||
h = ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, _e_manager_cb_key_down, man);
|
h = ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, _e_manager_cb_key_down, man);
|
||||||
if (h) man->handlers = evas_list_append(man->handlers, h);
|
if (h) man->handlers = evas_list_append(man->handlers, h);
|
||||||
|
h = ecore_event_handler_add(ECORE_X_EVENT_KEY_UP, _e_manager_cb_key_up, man);
|
||||||
|
if (h) man->handlers = evas_list_append(man->handlers, h);
|
||||||
h = ecore_event_handler_add(ECORE_X_EVENT_FRAME_EXTENTS_REQUEST, _e_manager_cb_frame_extents_request, man);
|
h = ecore_event_handler_add(ECORE_X_EVENT_FRAME_EXTENTS_REQUEST, _e_manager_cb_frame_extents_request, man);
|
||||||
h = ecore_event_handler_add(ECORE_X_EVENT_PING, _e_manager_cb_ping, man);
|
h = ecore_event_handler_add(ECORE_X_EVENT_PING, _e_manager_cb_ping, man);
|
||||||
if (h) man->handlers = evas_list_append(man->handlers, h);
|
if (h) man->handlers = evas_list_append(man->handlers, h);
|
||||||
|
@ -502,13 +505,25 @@ _e_manager_cb_key_down(void *data, int ev_type __UNUSED__, void *ev)
|
||||||
|
|
||||||
man = data;
|
man = data;
|
||||||
e = ev;
|
e = ev;
|
||||||
// printf("KEY %s [win=%x event_win=%x]\n", e->keyname, e->win, e->event_win);
|
// printf("KD %s [win=%x event_win=%x]\n", e->keyname, e->win, e->event_win);
|
||||||
if (e->event_win != man->root) return 1;
|
if (e->event_win != man->root) return 1;
|
||||||
if (e_bindings_key_down_event_handle(E_BINDING_CONTEXT_MANAGER, E_OBJECT(man), ev))
|
if (e_bindings_key_down_event_handle(E_BINDING_CONTEXT_MANAGER, E_OBJECT(man), ev))
|
||||||
return 0;
|
return 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_e_manager_cb_key_up(void *data, int ev_type __UNUSED__, void *ev)
|
||||||
|
{
|
||||||
|
E_Manager *man;
|
||||||
|
Ecore_X_Event_Key_Up *e;
|
||||||
|
|
||||||
|
man = data;
|
||||||
|
e = ev;
|
||||||
|
// printf("KU %s [win=%x event_win=%x]\n", e->keyname, e->win, e->event_win);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_e_manager_cb_frame_extents_request(void *data, int ev_type __UNUSED__, void *ev)
|
_e_manager_cb_frame_extents_request(void *data, int ev_type __UNUSED__, void *ev)
|
||||||
{
|
{
|
||||||
|
|
|
@ -103,19 +103,16 @@ e_pointer_window_new(Ecore_X_Window win)
|
||||||
|
|
||||||
/* Init the cursor object */
|
/* Init the cursor object */
|
||||||
if (ecore_x_cursor_color_supported_get())
|
if (ecore_x_cursor_color_supported_get())
|
||||||
{
|
p->color = 1;
|
||||||
p->color = 1;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
p->color = 0;
|
||||||
p->color = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* init edje */
|
/* init edje */
|
||||||
evas_object_move(p->pointer_object, 0, 0);
|
evas_object_move(p->pointer_object, 0, 0);
|
||||||
evas_object_resize(p->pointer_object, p->w, p->h);
|
evas_object_resize(p->pointer_object, p->w, p->h);
|
||||||
evas_object_show(p->pointer_object);
|
evas_object_show(p->pointer_object);
|
||||||
|
|
||||||
|
ecore_x_cursor_size_set(e_config->cursor_size * 3 / 4);
|
||||||
e_pointer_type_push(p, p, "default");
|
e_pointer_type_push(p, p, "default");
|
||||||
|
|
||||||
_e_pointers = evas_list_append(_e_pointers, p);
|
_e_pointers = evas_list_append(_e_pointers, p);
|
||||||
|
@ -183,14 +180,12 @@ e_pointer_type_push(E_Pointer *p, void *obj, const char *type)
|
||||||
{
|
{
|
||||||
E_Pointer_Stack *stack;
|
E_Pointer_Stack *stack;
|
||||||
|
|
||||||
|
p->e_cursor = e_config->use_e_cursor;
|
||||||
if (!_e_pointer_type_set(p, type))
|
if (!_e_pointer_type_set(p, type))
|
||||||
{
|
{
|
||||||
p->e_cursor = !p->e_cursor;
|
p->e_cursor = 0;
|
||||||
if (!_e_pointer_type_set(p, type))
|
if (!_e_pointer_type_set(p, type))
|
||||||
{
|
return;
|
||||||
printf("BUG: Can't set cursor!\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p->type) evas_stringshare_del(p->type);
|
if (p->type) evas_stringshare_del(p->type);
|
||||||
|
@ -205,9 +200,6 @@ e_pointer_type_push(E_Pointer *p, void *obj, const char *type)
|
||||||
stack->e_cursor = p->e_cursor;
|
stack->e_cursor = p->e_cursor;
|
||||||
p->stack = evas_list_prepend(p->stack, stack);
|
p->stack = evas_list_prepend(p->stack, stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* try the default cursor next time */
|
|
||||||
p->e_cursor = e_config->use_e_cursor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -345,35 +337,28 @@ _e_pointer_type_set(E_Pointer *p, const char *type)
|
||||||
if (p->e_cursor)
|
if (p->e_cursor)
|
||||||
{
|
{
|
||||||
Evas_Object *o;
|
Evas_Object *o;
|
||||||
char cursor[1024];
|
char cursor[1024];
|
||||||
|
|
||||||
o = p->pointer_object;
|
o = p->pointer_object;
|
||||||
if (p->color)
|
if (p->color)
|
||||||
{
|
{
|
||||||
snprintf(cursor, sizeof(cursor), "pointer/enlightenment/%s/color", type);
|
snprintf(cursor, sizeof(cursor), "pointer/enlightenment/%s/color", type);
|
||||||
if (!e_theme_edje_object_set(o,
|
if (!e_theme_edje_object_set(o, "base/theme/pointer", cursor))
|
||||||
"base/theme/pointer",
|
return 0;
|
||||||
cursor))
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
snprintf(cursor, sizeof(cursor), "pointer/enlightenment/%s/mono", type);
|
snprintf(cursor, sizeof(cursor), "pointer/enlightenment/%s/mono", type);
|
||||||
if (!e_theme_edje_object_set(o,
|
if (!e_theme_edje_object_set(o, "base/theme/pointer", cursor))
|
||||||
"base/theme/pointer",
|
return 0;
|
||||||
cursor))
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
edje_object_part_swallow(p->pointer_object, "hotspot", p->hot_object);
|
edje_object_part_swallow(p->pointer_object, "hotspot", p->hot_object);
|
||||||
p->hot.update = 1;
|
p->hot.update = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Ecore_X_Cursor cursor;
|
Ecore_X_Cursor cursor = 0;
|
||||||
|
|
||||||
if (!strcmp(type, "move"))
|
if (!strcmp(type, "move"))
|
||||||
{
|
{
|
||||||
cursor = ecore_x_cursor_shape_get(ECORE_X_CURSOR_FLEUR);
|
cursor = ecore_x_cursor_shape_get(ECORE_X_CURSOR_FLEUR);
|
||||||
|
@ -449,6 +434,7 @@ _e_pointer_type_set(E_Pointer *p, const char *type)
|
||||||
if (!cursor) printf("X Cursor for default is missing\n");
|
if (!cursor) printf("X Cursor for default is missing\n");
|
||||||
ecore_x_window_cursor_set(p->win, cursor);
|
ecore_x_window_cursor_set(p->win, cursor);
|
||||||
}
|
}
|
||||||
|
if (cursor) ecore_x_cursor_free(cursor);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ e_theme_about_new(E_Container *con)
|
||||||
}
|
}
|
||||||
e_win_delete_callback_set(about->win, _e_theme_about_cb_delete);
|
e_win_delete_callback_set(about->win, _e_theme_about_cb_delete);
|
||||||
about->win->data = about;
|
about->win->data = about;
|
||||||
|
e_win_dialog_set(about->win, 1);
|
||||||
e_win_name_class_set(about->win, "E", "_theme_about");
|
e_win_name_class_set(about->win, "E", "_theme_about");
|
||||||
e_win_title_set(about->win, _("About This Theme"));
|
e_win_title_set(about->win, _("About This Theme"));
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,7 @@ e_win_show(E_Win *win)
|
||||||
ecore_evas_software_x11_extra_event_window_add(win->ecore_evas, win->border->event_win);
|
ecore_evas_software_x11_extra_event_window_add(win->ecore_evas, win->border->event_win);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_e_win_prop_update(win);
|
||||||
e_border_show(win->border);
|
e_border_show(win->border);
|
||||||
ecore_evas_show(win->ecore_evas);
|
ecore_evas_show(win->ecore_evas);
|
||||||
}
|
}
|
||||||
|
@ -341,6 +342,23 @@ e_win_centered_set(E_Win *win, int centered)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
e_win_dialog_set(E_Win *win, int dialog)
|
||||||
|
{
|
||||||
|
E_OBJECT_CHECK(win);
|
||||||
|
E_OBJECT_TYPE_CHECK(win, E_WIN_TYPE);
|
||||||
|
if ((win->state.dialog) && (!dialog))
|
||||||
|
{
|
||||||
|
win->state.dialog = 0;
|
||||||
|
_e_win_prop_update(win);
|
||||||
|
}
|
||||||
|
else if ((!win->state.dialog) && (dialog))
|
||||||
|
{
|
||||||
|
win->state.dialog = 1;
|
||||||
|
_e_win_prop_update(win);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
static void
|
static void
|
||||||
_e_win_free(E_Win *win)
|
_e_win_free(E_Win *win)
|
||||||
|
@ -375,6 +393,16 @@ _e_win_prop_update(E_Win *win)
|
||||||
win->base_w, win->base_h,
|
win->base_w, win->base_h,
|
||||||
win->step_x, win->step_y,
|
win->step_x, win->step_y,
|
||||||
win->min_aspect, win->max_aspect);
|
win->min_aspect, win->max_aspect);
|
||||||
|
if (win->state.dialog)
|
||||||
|
{
|
||||||
|
ecore_x_icccm_transient_for_set(win->evas_win, win->container->manager->root);
|
||||||
|
ecore_x_netwm_window_type_set(win->evas_win, ECORE_X_WINDOW_TYPE_DIALOG);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ecore_x_icccm_transient_for_unset(win->evas_win);
|
||||||
|
ecore_x_netwm_window_type_set(win->evas_win, ECORE_X_WINDOW_TYPE_NORMAL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -387,13 +415,9 @@ _e_win_state_update(E_Win *win)
|
||||||
state[num++] = E_ATOM_WINDOW_STATE_CENTERED;
|
state[num++] = E_ATOM_WINDOW_STATE_CENTERED;
|
||||||
|
|
||||||
if (num)
|
if (num)
|
||||||
{
|
ecore_x_window_prop_card32_set(win->evas_win, E_ATOM_WINDOW_STATE, state, num);
|
||||||
ecore_x_window_prop_card32_set(win->evas_win, E_ATOM_WINDOW_STATE, state, num);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
ecore_x_window_prop_property_del(win->evas_win, E_ATOM_WINDOW_STATE);
|
||||||
ecore_x_window_prop_property_del(win->evas_win, E_ATOM_WINDOW_STATE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -33,7 +33,8 @@ struct _E_Win
|
||||||
void *data;
|
void *data;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
unsigned char centered : 1;
|
unsigned char centered : 1;
|
||||||
|
unsigned char dialog : 1;
|
||||||
} state;
|
} state;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -65,6 +66,7 @@ EAPI void e_win_name_class_set (E_Win *win, char *name, char *class);
|
||||||
EAPI void e_win_title_set (E_Win *win, char *title);
|
EAPI void e_win_title_set (E_Win *win, char *title);
|
||||||
|
|
||||||
EAPI void e_win_centered_set (E_Win *win, int centered);
|
EAPI void e_win_centered_set (E_Win *win, int centered);
|
||||||
|
EAPI void e_win_dialog_set (E_Win *win, int dialog);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1558,8 +1558,8 @@ _pager_cb_event_desk_show(void *data, int type, void *event)
|
||||||
e_popup_edje_bg_object_set(pp->popup, pp->bg_object);
|
e_popup_edje_bg_object_set(pp->popup, pp->bg_object);
|
||||||
e_popup_ignore_events_set(pp->popup, 1);
|
e_popup_ignore_events_set(pp->popup, 1);
|
||||||
e_popup_move_resize(pp->popup,
|
e_popup_move_resize(pp->popup,
|
||||||
pp->popup->zone->x + ((pp->popup->zone->w - w) / 2),
|
((pp->popup->zone->w - w) / 2),
|
||||||
pp->popup->zone->y + ((pp->popup->zone->h - h) / 2),
|
((pp->popup->zone->h - h) / 2),
|
||||||
w, h);
|
w, h);
|
||||||
e_bindings_mouse_grab(E_BINDING_CONTEXT_POPUP, pp->popup->evas_win);
|
e_bindings_mouse_grab(E_BINDING_CONTEXT_POPUP, pp->popup->evas_win);
|
||||||
e_bindings_wheel_grab(E_BINDING_CONTEXT_POPUP, pp->popup->evas_win);
|
e_bindings_wheel_grab(E_BINDING_CONTEXT_POPUP, pp->popup->evas_win);
|
||||||
|
|
Loading…
Reference in New Issue