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
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
* BUG: mouse pointer changes are buggy - white box for x curosrs the first
|
||||
time that cursor is used. also sometimes forgets what cursor to use and
|
||||
was being used etc.
|
||||
* BUG: fullscreen does not respect min/max window size
|
||||
* BUG: changing border from shaped to not shaped produces shadow bugs
|
||||
* 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
|
||||
(rhythmbox does this a lot apparently) e doesnt realise and still thinks
|
||||
its iconified.
|
||||
|
@ -33,7 +36,6 @@ Some of the things (in very short form) that need to be done to E17...
|
|||
ESSENTIAL FEATURES
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
* add fullscreen (zoom) support (e16 xvidmode or xrandr style)
|
||||
* implement thees maximise/fullscreen modes:
|
||||
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
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -413,4 +413,8 @@ e17_ilist_bg1.png \
|
|||
e17_slider_bt0.png \
|
||||
e17_slider_bt1.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);
|
||||
about->win->data = about;
|
||||
e_win_dialog_set(about->win, 1);
|
||||
e_win_name_class_set(about->win, "E", "_about");
|
||||
e_win_title_set(about->win, _("About Enlightenment"));
|
||||
|
||||
|
|
|
@ -4759,42 +4759,6 @@ _e_border_eval(E_Border *bd)
|
|||
}
|
||||
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)
|
||||
{
|
||||
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.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)
|
||||
{
|
||||
Ecore_X_Rectangle *rects;
|
||||
|
@ -4858,6 +4816,46 @@ _e_border_eval(E_Border *bd)
|
|||
bd->client.shaped = 0;
|
||||
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)
|
||||
{
|
||||
|
@ -4870,6 +4868,40 @@ _e_border_eval(E_Border *bd)
|
|||
// 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);
|
||||
|
||||
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)
|
||||
{
|
||||
rem = e_remember_find(bd);
|
||||
|
@ -5704,7 +5736,8 @@ _e_border_eval(E_Border *bd)
|
|||
|
||||
if ((!bd->placed) && (!bd->re_manage) &&
|
||||
(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))
|
||||
{
|
||||
/* Set this window into moving state */
|
||||
|
|
|
@ -203,18 +203,18 @@ struct _E_Border
|
|||
int num_icons;
|
||||
unsigned int user_time;
|
||||
struct {
|
||||
int left;
|
||||
int right;
|
||||
int top;
|
||||
int bottom;
|
||||
int left_start_y;
|
||||
int left_end_y;
|
||||
int right_start_y;
|
||||
int right_end_y;
|
||||
int top_start_x;
|
||||
int top_end_x;
|
||||
int bottom_start_x;
|
||||
int bottom_end_x;
|
||||
int left;
|
||||
int right;
|
||||
int top;
|
||||
int bottom;
|
||||
int left_start_y;
|
||||
int left_end_y;
|
||||
int right_start_y;
|
||||
int right_end_y;
|
||||
int top_start_x;
|
||||
int top_end_x;
|
||||
int bottom_start_x;
|
||||
int bottom_end_x;
|
||||
} strut;
|
||||
unsigned char ping : 1;
|
||||
struct {
|
||||
|
@ -260,7 +260,7 @@ struct _E_Border
|
|||
} fetch;
|
||||
|
||||
struct {
|
||||
unsigned char state : 1;
|
||||
unsigned char state : 1;
|
||||
} update;
|
||||
} netwm;
|
||||
|
||||
|
|
|
@ -44,6 +44,7 @@ e_configure_show(E_Container *con)
|
|||
|
||||
e_win_title_set(eco->win, _("Enlightenment Configuration"));
|
||||
e_win_name_class_set(eco->win, "E", "_configure");
|
||||
e_win_dialog_set(eco->win, 1);
|
||||
eco->evas = e_win_evas_get(eco->win);
|
||||
e_win_delete_callback_set(eco->win, _e_configure_cb_del_req);
|
||||
e_win_resize_callback_set(eco->win, _e_configure_cb_resize);
|
||||
|
|
|
@ -39,10 +39,10 @@ e_dialog_new(E_Container *con)
|
|||
free(dia);
|
||||
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_resize_callback_set(dia->win, _e_dialog_cb_resize);
|
||||
dia->win->data = dia;
|
||||
e_win_dialog_set(dia->win, 1);
|
||||
e_win_name_class_set(dia->win, "E", "_dialog");
|
||||
o = edje_object_add(e_win_evas_get(dia->win));
|
||||
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");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("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->client.icccm.min_w == bd->client.icccm.max_w) &&
|
||||
(bd->client.icccm.min_h == bd->client.icccm.max_h)) ||
|
||||
(bd->lock_user_maximize)))
|
||||
{
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("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))))
|
||||
{
|
||||
|
|
|
@ -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_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_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_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);
|
||||
|
@ -523,8 +519,6 @@ _e_int_menus_desktops_pre_cb(void *data, E_Menu *m)
|
|||
|
||||
e_menu_pre_activate_callback_set(m, NULL, NULL);
|
||||
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))
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
|
|
|
@ -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_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_frame_extents_request(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);
|
||||
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);
|
||||
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_PING, _e_manager_cb_ping, man);
|
||||
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;
|
||||
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_bindings_key_down_event_handle(E_BINDING_CONTEXT_MANAGER, E_OBJECT(man), ev))
|
||||
return 0;
|
||||
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
|
||||
_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 */
|
||||
if (ecore_x_cursor_color_supported_get())
|
||||
{
|
||||
p->color = 1;
|
||||
}
|
||||
p->color = 1;
|
||||
else
|
||||
{
|
||||
p->color = 0;
|
||||
}
|
||||
p->color = 0;
|
||||
|
||||
/* init edje */
|
||||
evas_object_move(p->pointer_object, 0, 0);
|
||||
evas_object_resize(p->pointer_object, p->w, p->h);
|
||||
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_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;
|
||||
|
||||
p->e_cursor = e_config->use_e_cursor;
|
||||
if (!_e_pointer_type_set(p, type))
|
||||
{
|
||||
p->e_cursor = !p->e_cursor;
|
||||
p->e_cursor = 0;
|
||||
if (!_e_pointer_type_set(p, type))
|
||||
{
|
||||
printf("BUG: Can't set cursor!\n");
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
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;
|
||||
p->stack = evas_list_prepend(p->stack, stack);
|
||||
}
|
||||
|
||||
/* try the default cursor next time */
|
||||
p->e_cursor = e_config->use_e_cursor;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -345,35 +337,28 @@ _e_pointer_type_set(E_Pointer *p, const char *type)
|
|||
if (p->e_cursor)
|
||||
{
|
||||
Evas_Object *o;
|
||||
char cursor[1024];
|
||||
char cursor[1024];
|
||||
|
||||
o = p->pointer_object;
|
||||
if (p->color)
|
||||
{
|
||||
snprintf(cursor, sizeof(cursor), "pointer/enlightenment/%s/color", type);
|
||||
if (!e_theme_edje_object_set(o,
|
||||
"base/theme/pointer",
|
||||
cursor))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (!e_theme_edje_object_set(o, "base/theme/pointer", cursor))
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(cursor, sizeof(cursor), "pointer/enlightenment/%s/mono", type);
|
||||
if (!e_theme_edje_object_set(o,
|
||||
"base/theme/pointer",
|
||||
cursor))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (!e_theme_edje_object_set(o, "base/theme/pointer", cursor))
|
||||
return 0;
|
||||
}
|
||||
edje_object_part_swallow(p->pointer_object, "hotspot", p->hot_object);
|
||||
p->hot.update = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
Ecore_X_Cursor cursor;
|
||||
Ecore_X_Cursor cursor = 0;
|
||||
|
||||
if (!strcmp(type, "move"))
|
||||
{
|
||||
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");
|
||||
ecore_x_window_cursor_set(p->win, cursor);
|
||||
}
|
||||
if (cursor) ecore_x_cursor_free(cursor);
|
||||
}
|
||||
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);
|
||||
about->win->data = about;
|
||||
e_win_dialog_set(about->win, 1);
|
||||
e_win_name_class_set(about->win, "E", "_theme_about");
|
||||
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);
|
||||
}
|
||||
}
|
||||
_e_win_prop_update(win);
|
||||
e_border_show(win->border);
|
||||
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 */
|
||||
static void
|
||||
_e_win_free(E_Win *win)
|
||||
|
@ -375,6 +393,16 @@ _e_win_prop_update(E_Win *win)
|
|||
win->base_w, win->base_h,
|
||||
win->step_x, win->step_y,
|
||||
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
|
||||
|
@ -387,13 +415,9 @@ _e_win_state_update(E_Win *win)
|
|||
state[num++] = E_ATOM_WINDOW_STATE_CENTERED;
|
||||
|
||||
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
|
||||
{
|
||||
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
|
||||
|
|
|
@ -33,7 +33,8 @@ struct _E_Win
|
|||
void *data;
|
||||
|
||||
struct {
|
||||
unsigned char centered : 1;
|
||||
unsigned char centered : 1;
|
||||
unsigned char dialog : 1;
|
||||
} 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_centered_set (E_Win *win, int centered);
|
||||
EAPI void e_win_dialog_set (E_Win *win, int dialog);
|
||||
|
||||
#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_ignore_events_set(pp->popup, 1);
|
||||
e_popup_move_resize(pp->popup,
|
||||
pp->popup->zone->x + ((pp->popup->zone->w - w) / 2),
|
||||
pp->popup->zone->y + ((pp->popup->zone->h - h) / 2),
|
||||
((pp->popup->zone->w - w) / 2),
|
||||
((pp->popup->zone->h - h) / 2),
|
||||
w, h);
|
||||
e_bindings_mouse_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