Remove incorrect usage of window.h from menu.c. See #426791 & #382962.

2007-04-15  Elijah Newren  <newren gmail com>

	Remove incorrect usage of window.h from menu.c.  See #426791 &
	#382962.

	* src/menu.c (enum MetaMenuItemType, variable menuitems,
	  meta_menu_item_new):
	cleanup: add a MENU_ITEM_RADIOBUTTON for the sticky stuff

	* src/menu.c (variable menuitems):
	* src/core.c (meta_core_get_menu_accelerator):
	* src/window.c (menu_callback, meta_window_show_menu):
	* src/common.h (enum MetaMenuOp):
	reinstate META_MENU_OP_UNABOVE

	* src/menu.c (meta_window_menu_new):
	remove hacks (using inappropriate data) for STICK/UNSTICK/ABOVE
	and clean it up while just setting STICK/UNSTICK activeness as
	necessary

	* src/menu.[ch] (meta_window_menu_new):
	* src/ui.[ch] (meta_ui_window_menu_new):
	make the active_workspace parameter an unsigned long

2007-04-15  Bruno Boaventura <brunobol@gnome.org>

	* src/menu.c (meta_window_menu_new): don't show the current
	workspace as a possible workspace to switch to.  Fixes #426791.

svn path=/trunk/; revision=3196
This commit is contained in:
Elijah Newren 2007-04-16 04:48:14 +00:00 committed by Elijah Newren
parent 6fa4dee13e
commit 6de7271ab6
8 changed files with 78 additions and 46 deletions

View File

@ -1,3 +1,32 @@
2007-04-15 Elijah Newren <newren gmail com>
Remove incorrect usage of window.h from menu.c. See #426791 &
#382962.
* src/menu.c (enum MetaMenuItemType, variable menuitems,
meta_menu_item_new):
cleanup: add a MENU_ITEM_RADIOBUTTON for the sticky stuff
* src/menu.c (variable menuitems):
* src/core.c (meta_core_get_menu_accelerator):
* src/window.c (menu_callback, meta_window_show_menu):
* src/common.h (enum MetaMenuOp):
reinstate META_MENU_OP_UNABOVE
* src/menu.c (meta_window_menu_new):
remove hacks (using inappropriate data) for STICK/UNSTICK/ABOVE
and clean it up while just setting STICK/UNSTICK activeness as
necessary
* src/menu.[ch] (meta_window_menu_new):
* src/ui.[ch] (meta_ui_window_menu_new):
make the active_workspace parameter an unsigned long
2007-04-15 Bruno Boaventura <brunobol@gnome.org>
* src/menu.c (meta_window_menu_new): don't show the current
workspace as a possible workspace to switch to. Fixes #426791.
2007-04-12 Elijah Newren <newren gmail com> 2007-04-12 Elijah Newren <newren gmail com>
* src/place.c (meta_window_place): do not auto-maximize windows * src/place.c (meta_window_place): do not auto-maximize windows

View File

@ -64,11 +64,12 @@ typedef enum
META_MENU_OP_MOVE = 1 << 9, META_MENU_OP_MOVE = 1 << 9,
META_MENU_OP_RESIZE = 1 << 10, META_MENU_OP_RESIZE = 1 << 10,
META_MENU_OP_ABOVE = 1 << 11, META_MENU_OP_ABOVE = 1 << 11,
META_MENU_OP_MOVE_LEFT = 1 << 12, META_MENU_OP_UNABOVE = 1 << 12,
META_MENU_OP_MOVE_RIGHT = 1 << 13, META_MENU_OP_MOVE_LEFT = 1 << 13,
META_MENU_OP_MOVE_UP = 1 << 14, META_MENU_OP_MOVE_RIGHT = 1 << 14,
META_MENU_OP_MOVE_DOWN = 1 << 15, META_MENU_OP_MOVE_UP = 1 << 15,
META_MENU_OP_RECOVER = 1 << 16 META_MENU_OP_MOVE_DOWN = 1 << 16,
META_MENU_OP_RECOVER = 1 << 17
} MetaMenuOp; } MetaMenuOp;
typedef struct _MetaWindowMenu MetaWindowMenu; typedef struct _MetaWindowMenu MetaWindowMenu;

View File

@ -531,6 +531,7 @@ meta_core_get_menu_accelerator (MetaMenuOp menu_op,
name = META_KEYBINDING_TOGGLE_STICKY; name = META_KEYBINDING_TOGGLE_STICKY;
break; break;
case META_MENU_OP_ABOVE: case META_MENU_OP_ABOVE:
case META_MENU_OP_UNABOVE:
name = META_KEYBINDING_TOGGLE_ABOVE; name = META_KEYBINDING_TOGGLE_ABOVE;
break; break;
case META_MENU_OP_WORKSPACES: case META_MENU_OP_WORKSPACES:

View File

@ -32,7 +32,6 @@
#include "core.h" #include "core.h"
#include "themewidget.h" #include "themewidget.h"
#include "metaaccellabel.h" #include "metaaccellabel.h"
#include "window.h"
typedef struct _MenuItem MenuItem; typedef struct _MenuItem MenuItem;
typedef struct _MenuData MenuData; typedef struct _MenuData MenuData;
@ -43,6 +42,7 @@ typedef enum
MENU_ITEM_NORMAL, MENU_ITEM_NORMAL,
MENU_ITEM_IMAGE, MENU_ITEM_IMAGE,
MENU_ITEM_CHECKBOX, MENU_ITEM_CHECKBOX,
MENU_ITEM_RADIOBUTTON,
} MetaMenuItemType; } MetaMenuItemType;
struct _MenuItem struct _MenuItem
@ -87,9 +87,11 @@ static MenuItem menuitems[] = {
/* Translators: Translate this string the same way as you do in libwnck! */ /* Translators: Translate this string the same way as you do in libwnck! */
{ META_MENU_OP_ABOVE, MENU_ITEM_CHECKBOX, NULL, FALSE, N_("Always on _Top") }, { META_MENU_OP_ABOVE, MENU_ITEM_CHECKBOX, NULL, FALSE, N_("Always on _Top") },
/* Translators: Translate this string the same way as you do in libwnck! */ /* Translators: Translate this string the same way as you do in libwnck! */
{ META_MENU_OP_STICK, MENU_ITEM_CHECKBOX, NULL, FALSE, N_("_Always on Visible Workspace") }, { META_MENU_OP_UNABOVE, MENU_ITEM_CHECKBOX, NULL, TRUE, N_("Always on _Top") },
/* Translators: Translate this string the same way as you do in libwnck! */ /* Translators: Translate this string the same way as you do in libwnck! */
{ META_MENU_OP_UNSTICK, MENU_ITEM_CHECKBOX, NULL, FALSE, N_("_Only on This Workspace") }, { META_MENU_OP_STICK, MENU_ITEM_RADIOBUTTON, NULL, FALSE, N_("_Always on Visible Workspace") },
/* Translators: Translate this string the same way as you do in libwnck! */
{ META_MENU_OP_UNSTICK, MENU_ITEM_RADIOBUTTON, NULL, FALSE, N_("_Only on This Workspace") },
/* Translators: Translate this string the same way as you do in libwnck! */ /* Translators: Translate this string the same way as you do in libwnck! */
{ META_MENU_OP_MOVE_LEFT, MENU_ITEM_NORMAL, NULL, FALSE, N_("Move to Workspace _Left") }, { META_MENU_OP_MOVE_LEFT, MENU_ITEM_NORMAL, NULL, FALSE, N_("Move to Workspace _Left") },
/* Translators: Translate this string the same way as you do in libwnck! */ /* Translators: Translate this string the same way as you do in libwnck! */
@ -274,13 +276,17 @@ menu_item_new (MenuItem *menuitem, int workspace_id)
{ {
mi = gtk_check_menu_item_new (); mi = gtk_check_menu_item_new ();
if (menuitem->op == META_MENU_OP_STICK || menuitem->op == META_MENU_OP_UNSTICK) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi),
{ menuitem->checked);
gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (mi), }
TRUE); else if (menuitem->type == MENU_ITEM_RADIOBUTTON)
} {
else mi = gtk_check_menu_item_new ();
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi), menuitem->checked);
gtk_check_menu_item_set_draw_as_radio (GTK_CHECK_MENU_ITEM (mi),
TRUE);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi),
menuitem->checked);
} }
else else
return gtk_separator_menu_item_new (); return gtk_separator_menu_item_new ();
@ -305,7 +311,7 @@ meta_window_menu_new (MetaFrames *frames,
MetaMenuOp ops, MetaMenuOp ops,
MetaMenuOp insensitive, MetaMenuOp insensitive,
Window client_xwindow, Window client_xwindow,
int active_workspace, unsigned long active_workspace,
int n_workspaces, int n_workspaces,
MetaWindowMenuFunc func, MetaWindowMenuFunc func,
gpointer data) gpointer data)
@ -313,6 +319,7 @@ meta_window_menu_new (MetaFrames *frames,
int i; int i;
MetaWindowMenu *menu; MetaWindowMenu *menu;
/* FIXME: Modifications to 'ops' should happen in meta_window_show_menu */
if (n_workspaces < 2) if (n_workspaces < 2)
ops &= ~(META_MENU_OP_STICK | META_MENU_OP_UNSTICK | META_MENU_OP_WORKSPACES); ops &= ~(META_MENU_OP_STICK | META_MENU_OP_UNSTICK | META_MENU_OP_WORKSPACES);
else if (n_workspaces == 2) else if (n_workspaces == 2)
@ -344,26 +351,19 @@ meta_window_menu_new (MetaFrames *frames,
mi = menu_item_new (&menuitem, -1); mi = menu_item_new (&menuitem, -1);
if ((menuitem.op == META_MENU_OP_STICK) || /* Set the activeness of radiobuttons. */
(menuitem.op == META_MENU_OP_UNSTICK) || switch (menuitem.op)
(menuitem.op == META_MENU_OP_ABOVE))
{ {
Display *xdisplay; case META_MENU_OP_STICK:
MetaDisplay *display; gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi),
MetaWindow *window; active_workspace == 0xFFFFFFFF);
break;
xdisplay = gdk_x11_drawable_get_xdisplay (GTK_WIDGET (frames)->window); case META_MENU_OP_UNSTICK:
display = meta_display_for_x_display (xdisplay); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi),
window = meta_display_lookup_x_window (display, client_xwindow); active_workspace != 0xFFFFFFFF);
break;
if (menuitem.op == META_MENU_OP_STICK) default:
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi), window->on_all_workspaces); break;
else
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi), !window->on_all_workspaces);
if (menuitem.op == META_MENU_OP_ABOVE)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi), window->wm_state_above);
} }
if (menuitem.type != MENU_ITEM_SEPARATOR) if (menuitem.type != MENU_ITEM_SEPARATOR)
@ -407,7 +407,7 @@ meta_window_menu_new (MetaFrames *frames,
N_("Move to Another _Workspace") N_("Move to Another _Workspace")
}; };
meta_verbose ("Creating %d-workspace menu current space %d\n", meta_verbose ("Creating %d-workspace menu current space %lu\n",
n_workspaces, active_workspace); n_workspaces, active_workspace);
display = gdk_x11_drawable_get_xdisplay (GTK_WIDGET (frames)->window); display = gdk_x11_drawable_get_xdisplay (GTK_WIDGET (frames)->window);
@ -443,12 +443,9 @@ meta_window_menu_new (MetaFrames *frames,
g_free (label); g_free (label);
if (!(ops & META_MENU_OP_UNSTICK) && if ((active_workspace == (unsigned)i) && (ops & META_MENU_OP_UNSTICK))
(active_workspace == i ||
insensitive & META_MENU_OP_WORKSPACES))
gtk_widget_set_sensitive (mi, FALSE);
else if (insensitive & META_MENU_OP_WORKSPACES)
gtk_widget_set_sensitive (mi, FALSE); gtk_widget_set_sensitive (mi, FALSE);
md = g_new (MenuData, 1); md = g_new (MenuData, 1);
md->menu = menu; md->menu = menu;

View File

@ -47,7 +47,7 @@ MetaWindowMenu* meta_window_menu_new (MetaFrames *frames,
MetaMenuOp ops, MetaMenuOp ops,
MetaMenuOp insensitive, MetaMenuOp insensitive,
Window client_xwindow, Window client_xwindow,
int active_workspace, unsigned long active_workspace,
int n_workspaces, int n_workspaces,
MetaWindowMenuFunc func, MetaWindowMenuFunc func,
gpointer data); gpointer data);

View File

@ -319,7 +319,7 @@ meta_ui_window_menu_new (MetaUI *ui,
Window client_xwindow, Window client_xwindow,
MetaMenuOp ops, MetaMenuOp ops,
MetaMenuOp insensitive, MetaMenuOp insensitive,
int active_workspace, unsigned long active_workspace,
int n_workspaces, int n_workspaces,
MetaWindowMenuFunc func, MetaWindowMenuFunc func,
gpointer data) gpointer data)

View File

@ -116,7 +116,7 @@ MetaWindowMenu* meta_ui_window_menu_new (MetaUI *ui,
Window client_xwindow, Window client_xwindow,
MetaMenuOp ops, MetaMenuOp ops,
MetaMenuOp insensitive, MetaMenuOp insensitive,
int active_workspace, unsigned long active_workspace,
int n_workspaces, int n_workspaces,
MetaWindowMenuFunc func, MetaWindowMenuFunc func,
gpointer data); gpointer data);

View File

@ -6408,6 +6408,7 @@ menu_callback (MetaWindowMenu *menu,
break; break;
case META_MENU_OP_ABOVE: case META_MENU_OP_ABOVE:
case META_MENU_OP_UNABOVE:
if (window->wm_state_above == FALSE) if (window->wm_state_above == FALSE)
meta_window_make_above (window); meta_window_make_above (window);
else else
@ -6537,7 +6538,10 @@ meta_window_show_menu (MetaWindow *window,
ops |= META_MENU_OP_UNSTICK; ops |= META_MENU_OP_UNSTICK;
ops |= META_MENU_OP_STICK; ops |= META_MENU_OP_STICK;
ops |= META_MENU_OP_ABOVE; if (window->wm_state_above)
ops |= META_MENU_OP_UNABOVE;
else
ops |= META_MENU_OP_ABOVE;
if (!window->has_maximize_func) if (!window->has_maximize_func)
insensitive |= META_MENU_OP_UNMAXIMIZE | META_MENU_OP_MAXIMIZE; insensitive |= META_MENU_OP_UNMAXIMIZE | META_MENU_OP_MAXIMIZE;
@ -6563,7 +6567,7 @@ meta_window_show_menu (MetaWindow *window,
if ((window->type == META_WINDOW_DESKTOP) || if ((window->type == META_WINDOW_DESKTOP) ||
(window->type == META_WINDOW_DOCK) || (window->type == META_WINDOW_DOCK) ||
(window->type == META_WINDOW_SPLASHSCREEN)) (window->type == META_WINDOW_SPLASHSCREEN))
insensitive |= META_MENU_OP_ABOVE; insensitive |= META_MENU_OP_ABOVE | META_MENU_OP_UNABOVE;
/* If all operations are disabled, just quit without showing the menu. /* If all operations are disabled, just quit without showing the menu.
* This is the case, for example, with META_WINDOW_DESKTOP windows. * This is the case, for example, with META_WINDOW_DESKTOP windows.