{
entry->config.hidden = 0;
if (!entry->border) return;
+ if (entry->config.jump)
+ e_desk_show(entry->border->desk);
e_border_raise(entry->border);
e_border_show(entry->border);
e_border_focus_set(entry->border, 1, 1);
static void
_e_qa_border_deactivate(E_Quick_Access_Entry *entry)
{
+ if (entry->config.jump) return;
entry->config.hidden = 1;
if (!entry->border) return;
e_border_hide(entry->border, 1);
if (entry->config.autohide && (!entry->border->focused))
_e_qa_border_deactivate(entry);
- if (qa_config->skip_taskbar)
- entry->border->client.netwm.state.skip_taskbar = 1;
- if (qa_config->skip_pager)
- entry->border->client.netwm.state.skip_pager = 1;
+ if (entry->config.jump)
+ {
+ entry->border->client.netwm.state.skip_taskbar = 0;
+ entry->border->client.netwm.state.skip_pager = 0;
+ }
+ else
+ {
+ if (qa_config->skip_taskbar)
+ entry->border->client.netwm.state.skip_taskbar = 1;
+ if (qa_config->skip_pager)
+ entry->border->client.netwm.state.skip_pager = 1;
+ }
}
static void
/* FIXME: doesn't work, causes window to flicker on associate
if (entry->config.hidden)
_e_qa_border_deactivate(entry);
- else
*/
_e_qa_entry_border_props_apply(entry);
}
{
E_Exec_Instance *ei;
- if (!entry->cmd) return;
+ if ((!entry->cmd) || (!entry->config.relaunch)) return;
if (entry->exe)
{
INF("already waiting '%s' to start for '%s' (name=%s, class=%s), "
if (entry->border)
{
- if (entry->border->focused || entry->config.hide_when_behind)
+ if ((!entry->config.jump) && (entry->border->focused || entry->config.hide_when_behind))
{
_e_qa_border_deactivate(entry);
return;
}
static void
+_e_qa_bd_menu_jump(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
+{
+ E_Quick_Access_Entry *entry = data;
+
+ entry->config.jump = !entry->config.jump;
+ if (entry->config.jump)
+ {
+ entry->config.autohide = entry->config.hide_when_behind = 0;
+ }
+ _e_qa_entry_border_props_apply(entry);
+}
+
+static void
_e_qa_bd_menu_hideraise(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
{
E_Quick_Access_Entry *entry = data;
e_object_data_set(E_OBJECT(subm), entry);
e_menu_item_submenu_set(mi, subm);
- mi = e_menu_item_new(subm);
- e_menu_item_check_set(mi, 1);
- e_menu_item_toggle_set(mi, entry->config.autohide);
- e_menu_item_label_set(mi, _("Autohide"));
- e_menu_item_callback_set(mi, _e_qa_bd_menu_autohide, entry);
+ if (!entry->config.jump)
+ {
+ mi = e_menu_item_new(subm);
+ e_menu_item_check_set(mi, 1);
+ e_menu_item_toggle_set(mi, entry->config.autohide);
+ e_menu_item_label_set(mi, _("Autohide"));
+ e_menu_item_callback_set(mi, _e_qa_bd_menu_autohide, entry);
+
+ mi = e_menu_item_new(subm);
+ e_menu_item_check_set(mi, 1);
+ e_menu_item_toggle_set(mi, entry->config.hide_when_behind);
+ e_menu_item_label_set(mi, _("Hide Instead Of Raise"));
+ e_menu_item_callback_set(mi, _e_qa_bd_menu_hideraise, entry);
+ }
mi = e_menu_item_new(subm);
e_menu_item_check_set(mi, 1);
- e_menu_item_toggle_set(mi, entry->config.hide_when_behind);
- e_menu_item_label_set(mi, _("Hide Instead Of Raise"));
- e_menu_item_callback_set(mi, _e_qa_bd_menu_hideraise, entry);
+ e_menu_item_toggle_set(mi, entry->config.jump);
+ e_menu_item_label_set(mi, _("Jump Mode"));
+ e_menu_item_callback_set(mi, _e_qa_bd_menu_jump, entry);
/* can't set relaunch for internal E dialogs; safety #1 */
if (strcmp(entry->name, "E"))