diff options
author | Havoc Pennington <hp@redhat.com> | 2007-12-19 21:17:50 +0000 |
---|---|---|
committer | Havoc Pennington <hp@src.gnome.org> | 2007-12-19 21:17:50 +0000 |
commit | 72b08c82b16a850fd4f0cd52d58812b4180fe969 (patch) | |
tree | 587cf32237864f2ff6241c1cbf1045074eed130d /src/core.c | |
parent | 3880951458910982807fc20ee9f11e22e947ddd2 (diff) | |
download | metacity-72b08c82b16a850fd4f0cd52d58812b4180fe969.tar.gz |
sort source files into these directories according to which part of the WM
2007-12-19 Havoc Pennington <hp@redhat.com>
* src/ui, src/core, src/include: sort source files into these
directories according to which part of the WM they are supposed to
be in. In an eventual plan, we should also create
src/compositor/render, src/compositor/fallback and move some of
the compositor stuff into that.
* autogen.sh: require a newer automake, so we don't have to use
a recursive build
* src/ui/tabpopup.c: put in a hack to make the build temporarily
work, want to commit the large rearrangement before fixing this
not to include workspace.h or frame.h
* src/core/iconcache.c (meta_read_icons): temporarily break this
to get the build to work, want to commit the large rearrangement
before fixing this file not to include theme.h
svn path=/trunk/; revision=3491
Diffstat (limited to 'src/core.c')
-rw-r--r-- | src/core.c | 745 |
1 files changed, 0 insertions, 745 deletions
diff --git a/src/core.c b/src/core.c deleted file mode 100644 index 1454105e..00000000 --- a/src/core.c +++ /dev/null @@ -1,745 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ - -/* Metacity interface used by GTK+ UI to talk to core */ - -/* - * Copyright (C) 2001 Havoc Pennington - * Copyright (C) 2003 Rob Adams - * Copyright (C) 2004-2006 Elijah Newren - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - * 02111-1307, USA. - */ - -#include <config.h> -#include "core.h" -#include "frame.h" -#include "workspace.h" -#include "prefs.h" - -/* Looks up the MetaWindow representing the frame of the given X window. - * Used as a helper function by a bunch of the functions below. - * - * FIXME: The functions that use this function throw the result away - * after use. Many of these functions tend to be called in small groups, - * which results in get_window() getting called several times in succession - * with the same parameters. We should profile to see whether this wastes - * much time, and if it does we should look into a generalised - * meta_core_get_window_info() which takes a bunch of pointers to variables - * to put its results in, and only fills in the non-null ones. - */ -static MetaWindow * -get_window (Display *xdisplay, - Window frame_xwindow) -{ - MetaDisplay *display; - MetaWindow *window; - - display = meta_display_for_x_display (xdisplay); - window = meta_display_lookup_x_window (display, frame_xwindow); - - if (window == NULL || window->frame == NULL) - { - meta_bug ("No such frame window 0x%lx!\n", frame_xwindow); - return NULL; - } - - return window; -} - -void -meta_core_get (Display *xdisplay, - Window xwindow, - ...) -{ - va_list args; - MetaCoreGetType request; - - MetaDisplay *display = meta_display_for_x_display (xdisplay); - MetaWindow *window = meta_display_lookup_x_window (display, xwindow); - - va_start (args, xwindow); - - request = va_arg (args, MetaCoreGetType); - - /* Now, we special-case the first request slightly. Mostly, requests - * for information on windows which have no frame are errors. - * But sometimes we may want to know *whether* a window has a frame. - * In this case, pass the key META_CORE_WINDOW_HAS_FRAME - * as the *first* request, with a pointer to a boolean; if the window - * has no frame, this will be set to False and meta_core_get will - * exit immediately (so the values of any other requests will be - * undefined). Otherwise it will be set to True and meta_core_get will - * continue happily on its way. - */ - - if (request != META_CORE_WINDOW_HAS_FRAME && - (window == NULL || window->frame == NULL)) { - meta_bug ("No such frame window 0x%lx!\n", xwindow); - return; - } - - while (request != META_CORE_GET_END) { - - gpointer answer = va_arg (args, gpointer); - - switch (request) { - case META_CORE_WINDOW_HAS_FRAME: - *((gboolean*)answer) = window != NULL && window->frame != NULL; - if (!*((gboolean*)answer)) return; /* see above */ - break; - case META_CORE_GET_CLIENT_WIDTH: - *((gint*)answer) = window->rect.width; - break; - case META_CORE_GET_CLIENT_HEIGHT: - *((gint*)answer) = window->rect.height; - break; - case META_CORE_IS_TITLEBAR_ONSCREEN: - *((gboolean*)answer) = meta_window_titlebar_is_onscreen (window); - break; - case META_CORE_GET_CLIENT_XWINDOW: - *((Window*)answer) = window->xwindow; - break; - case META_CORE_GET_FRAME_FLAGS: - *((MetaFrameFlags*)answer) = meta_frame_get_flags (window->frame); - break; - case META_CORE_GET_FRAME_TYPE: - { - MetaFrameType base_type = META_FRAME_TYPE_LAST; - - switch (window->type) - { - case META_WINDOW_NORMAL: - base_type = META_FRAME_TYPE_NORMAL; - break; - - case META_WINDOW_DIALOG: - base_type = META_FRAME_TYPE_DIALOG; - break; - - case META_WINDOW_MODAL_DIALOG: - base_type = META_FRAME_TYPE_MODAL_DIALOG; - break; - - case META_WINDOW_MENU: - base_type = META_FRAME_TYPE_MENU; - break; - - case META_WINDOW_UTILITY: - base_type = META_FRAME_TYPE_UTILITY; - break; - - case META_WINDOW_DESKTOP: - case META_WINDOW_DOCK: - case META_WINDOW_TOOLBAR: - case META_WINDOW_SPLASHSCREEN: - /* No frame */ - base_type = META_FRAME_TYPE_LAST; - break; - - } - - if (base_type == META_FRAME_TYPE_LAST) - { - /* can't add border if undecorated */ - *((MetaFrameType*)answer) = META_FRAME_TYPE_LAST; - } - else if (window->border_only) - { - /* override base frame type */ - *((MetaFrameType*)answer) = META_FRAME_TYPE_BORDER; - } - else - { - *((MetaFrameType*)answer) = base_type; - } - - break; - } - case META_CORE_GET_MINI_ICON: - *((GdkPixbuf**)answer) = window->mini_icon; - break; - case META_CORE_GET_ICON: - *((GdkPixbuf**)answer) = window->icon; - break; - case META_CORE_GET_X: - meta_window_get_position (window, (int*)answer, NULL); - break; - case META_CORE_GET_Y: - meta_window_get_position (window, NULL, (int*)answer); - break; - case META_CORE_GET_FRAME_WORKSPACE: - *((gint*)answer) = meta_window_get_net_wm_desktop (window); - break; - case META_CORE_GET_FRAME_X: - *((gint*)answer) = window->frame->rect.x; - break; - case META_CORE_GET_FRAME_Y: - *((gint*)answer) = window->frame->rect.y; - break; - case META_CORE_GET_FRAME_WIDTH: - *((gint*)answer) = window->frame->rect.width; - break; - case META_CORE_GET_FRAME_HEIGHT: - *((gint*)answer) = window->frame->rect.height; - break; - case META_CORE_GET_SCREEN_WIDTH: - *((gint*)answer) = window->screen->rect.width; - break; - case META_CORE_GET_SCREEN_HEIGHT: - *((gint*)answer) = window->screen->rect.height; - break; - - default: - meta_warning(_("Unknown window information request: %d"), request); - } - - request = va_arg (args, MetaCoreGetType); - } - - va_end (args); -} - -void -meta_core_queue_frame_resize (Display *xdisplay, - Window frame_xwindow) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_queue (window, META_QUEUE_MOVE_RESIZE); -} - -void -meta_core_user_move (Display *xdisplay, - Window frame_xwindow, - int x, - int y) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_move (window, TRUE, x, y); -} - -void -meta_core_user_resize (Display *xdisplay, - Window frame_xwindow, - int gravity, - int width, - int height) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_resize_with_gravity (window, TRUE, width, height, gravity); -} - -void -meta_core_user_raise (Display *xdisplay, - Window frame_xwindow) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_raise (window); -} - -void -meta_core_user_lower_and_unfocus (Display *xdisplay, - Window frame_xwindow, - guint32 timestamp) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_lower (window); - - if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK && - meta_prefs_get_raise_on_click ()) - { - /* Move window to the back of the focusing workspace's MRU list. - * Do extra sanity checks to avoid possible race conditions. - * (Borrowed from window.c.) - */ - if (window->screen->active_workspace && - meta_window_located_on_workspace (window, - window->screen->active_workspace)) - { - GList* link; - link = g_list_find (window->screen->active_workspace->mru_list, - window); - g_assert (link); - - window->screen->active_workspace->mru_list = - g_list_remove_link (window->screen->active_workspace->mru_list, - link); - g_list_free (link); - - window->screen->active_workspace->mru_list = - g_list_append (window->screen->active_workspace->mru_list, - window); - } - } - - /* focus the default window, if needed */ - if (window->has_focus) - meta_workspace_focus_default_window (window->screen->active_workspace, - NULL, - timestamp); -} - -void -meta_core_user_focus (Display *xdisplay, - Window frame_xwindow, - guint32 timestamp) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_focus (window, timestamp); -} - -void -meta_core_minimize (Display *xdisplay, - Window frame_xwindow) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_minimize (window); -} - -void -meta_core_maximize (Display *xdisplay, - Window frame_xwindow) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - if (meta_prefs_get_raise_on_click ()) - meta_window_raise (window); - - meta_window_maximize (window, - META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL); -} - -void -meta_core_toggle_maximize (Display *xdisplay, - Window frame_xwindow) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - if (meta_prefs_get_raise_on_click ()) - meta_window_raise (window); - - if (META_WINDOW_MAXIMIZED (window)) - meta_window_unmaximize (window, - META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL); - else - meta_window_maximize (window, - META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL); -} - -void -meta_core_unmaximize (Display *xdisplay, - Window frame_xwindow) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - if (meta_prefs_get_raise_on_click ()) - meta_window_raise (window); - - meta_window_unmaximize (window, - META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_VERTICAL); -} - -void -meta_core_delete (Display *xdisplay, - Window frame_xwindow, - guint32 timestamp) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_delete (window, timestamp); -} - -void -meta_core_unshade (Display *xdisplay, - Window frame_xwindow, - guint32 timestamp) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_unshade (window, timestamp); -} - -void -meta_core_shade (Display *xdisplay, - Window frame_xwindow, - guint32 timestamp) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_shade (window, timestamp); -} - -void -meta_core_unstick (Display *xdisplay, - Window frame_xwindow) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_unstick (window); -} - -void -meta_core_make_above (Display *xdisplay, - Window frame_xwindow) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_make_above (window); -} - -void -meta_core_unmake_above (Display *xdisplay, - Window frame_xwindow) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_unmake_above (window); -} - -void -meta_core_stick (Display *xdisplay, - Window frame_xwindow) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_stick (window); -} - -void -meta_core_change_workspace (Display *xdisplay, - Window frame_xwindow, - int new_workspace) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - meta_window_change_workspace (window, - meta_screen_get_workspace_by_index (window->screen, - new_workspace)); -} - -int -meta_core_get_num_workspaces (Screen *xscreen) -{ - MetaScreen *screen; - - screen = meta_screen_for_x_screen (xscreen); - - return meta_screen_get_n_workspaces (screen); -} - -int -meta_core_get_active_workspace (Screen *xscreen) -{ - MetaScreen *screen; - - screen = meta_screen_for_x_screen (xscreen); - - return meta_workspace_index (screen->active_workspace); -} - -void -meta_core_show_window_menu (Display *xdisplay, - Window frame_xwindow, - int root_x, - int root_y, - int button, - guint32 timestamp) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - - if (meta_prefs_get_raise_on_click ()) - meta_window_raise (window); - meta_window_focus (window, timestamp); - - meta_window_show_menu (window, root_x, root_y, button, timestamp); -} - -void -meta_core_get_menu_accelerator (MetaMenuOp menu_op, - int workspace, - unsigned int *keysym, - MetaVirtualModifier *modifiers) -{ - const char *name; - - name = NULL; - - switch (menu_op) - { - case META_MENU_OP_DELETE: - name = META_KEYBINDING_CLOSE; - break; - case META_MENU_OP_MINIMIZE: - name = META_KEYBINDING_MINIMIZE; - break; - case META_MENU_OP_UNMAXIMIZE: - name = META_KEYBINDING_UNMAXIMIZE; - break; - case META_MENU_OP_MAXIMIZE: - name = META_KEYBINDING_MAXIMIZE; - break; - case META_MENU_OP_UNSHADE: - case META_MENU_OP_SHADE: - name = META_KEYBINDING_TOGGLE_SHADE; - break; - case META_MENU_OP_UNSTICK: - case META_MENU_OP_STICK: - name = META_KEYBINDING_TOGGLE_STICKY; - break; - case META_MENU_OP_ABOVE: - case META_MENU_OP_UNABOVE: - name = META_KEYBINDING_TOGGLE_ABOVE; - break; - case META_MENU_OP_WORKSPACES: - switch (workspace) - { - case 1: - name = META_KEYBINDING_MOVE_WORKSPACE_1; - break; - case 2: - name = META_KEYBINDING_MOVE_WORKSPACE_2; - break; - case 3: - name = META_KEYBINDING_MOVE_WORKSPACE_3; - break; - case 4: - name = META_KEYBINDING_MOVE_WORKSPACE_4; - break; - case 5: - name = META_KEYBINDING_MOVE_WORKSPACE_5; - break; - case 6: - name = META_KEYBINDING_MOVE_WORKSPACE_6; - break; - case 7: - name = META_KEYBINDING_MOVE_WORKSPACE_7; - break; - case 8: - name = META_KEYBINDING_MOVE_WORKSPACE_8; - break; - case 9: - name = META_KEYBINDING_MOVE_WORKSPACE_9; - break; - case 10: - name = META_KEYBINDING_MOVE_WORKSPACE_10; - break; - case 11: - name = META_KEYBINDING_MOVE_WORKSPACE_11; - break; - case 12: - name = META_KEYBINDING_MOVE_WORKSPACE_12; - break; - } - break; - case META_MENU_OP_MOVE: - name = META_KEYBINDING_BEGIN_MOVE; - break; - case META_MENU_OP_RESIZE: - name = META_KEYBINDING_BEGIN_RESIZE; - break; - case META_MENU_OP_MOVE_LEFT: - name = META_KEYBINDING_MOVE_WORKSPACE_LEFT; - break; - case META_MENU_OP_MOVE_RIGHT: - name = META_KEYBINDING_MOVE_WORKSPACE_RIGHT; - break; - case META_MENU_OP_MOVE_UP: - name = META_KEYBINDING_MOVE_WORKSPACE_UP; - break; - case META_MENU_OP_MOVE_DOWN: - name = META_KEYBINDING_MOVE_WORKSPACE_DOWN; - break; - case META_MENU_OP_RECOVER: - /* No keybinding for this one */ - break; - } - - if (name) - { - meta_prefs_get_window_binding (name, keysym, modifiers); - } - else - { - *keysym = 0; - *modifiers = 0; - } -} - -const char* -meta_core_get_workspace_name_with_index (Display *xdisplay, - Window xroot, - int index) -{ - MetaDisplay *display; - MetaScreen *screen; - MetaWorkspace *workspace; - - display = meta_display_for_x_display (xdisplay); - screen = meta_display_screen_for_root (display, xroot); - g_assert (screen != NULL); - workspace = meta_screen_get_workspace_by_index (screen, index); - return workspace ? meta_workspace_get_name (workspace) : NULL; -} - -gboolean -meta_core_begin_grab_op (Display *xdisplay, - Window frame_xwindow, - MetaGrabOp op, - gboolean pointer_already_grabbed, - gboolean frame_action, - int button, - gulong modmask, - guint32 timestamp, - int root_x, - int root_y) -{ - MetaWindow *window = get_window (xdisplay, frame_xwindow); - MetaDisplay *display; - MetaScreen *screen; - - display = meta_display_for_x_display (xdisplay); - screen = meta_display_screen_for_xwindow (display, frame_xwindow); - - g_assert (screen != NULL); - - return meta_display_begin_grab_op (display, screen, window, - op, pointer_already_grabbed, - frame_action, - button, modmask, - timestamp, root_x, root_y); -} - -void -meta_core_end_grab_op (Display *xdisplay, - guint32 timestamp) -{ - MetaDisplay *display; - - display = meta_display_for_x_display (xdisplay); - - meta_display_end_grab_op (display, timestamp); -} - -MetaGrabOp -meta_core_get_grab_op (Display *xdisplay) -{ - MetaDisplay *display; - - display = meta_display_for_x_display (xdisplay); - - return display->grab_op; -} - -Window -meta_core_get_grab_frame (Display *xdisplay) -{ - MetaDisplay *display; - - display = meta_display_for_x_display (xdisplay); - - g_assert (display != NULL); - g_assert (display->grab_op == META_GRAB_OP_NONE || - display->grab_screen != NULL); - g_assert (display->grab_op == META_GRAB_OP_NONE || - display->grab_screen->display->xdisplay == xdisplay); - - if (display->grab_op != META_GRAB_OP_NONE && - display->grab_window && - display->grab_window->frame) - return display->grab_window->frame->xwindow; - else - return None; -} - -int -meta_core_get_grab_button (Display *xdisplay) -{ - MetaDisplay *display; - - display = meta_display_for_x_display (xdisplay); - - if (display->grab_op == META_GRAB_OP_NONE) - return -1; - - return display->grab_button; -} - -void -meta_core_grab_buttons (Display *xdisplay, - Window frame_xwindow) -{ - MetaDisplay *display; - - display = meta_display_for_x_display (xdisplay); - - meta_verbose ("Grabbing buttons on frame 0x%lx\n", frame_xwindow); - meta_display_grab_window_buttons (display, frame_xwindow); -} - -void -meta_core_set_screen_cursor (Display *xdisplay, - Window frame_on_screen, - MetaCursor cursor) -{ - MetaWindow *window = get_window (xdisplay, frame_on_screen); - - meta_frame_set_screen_cursor (window->frame, cursor); -} - -void -meta_core_increment_event_serial (Display *xdisplay) -{ - MetaDisplay *display; - - display = meta_display_for_x_display (xdisplay); - - meta_display_increment_event_serial (display); -} - -void -meta_invalidate_default_icons (void) -{ - GSList *displays, *windows; - - for (displays = meta_displays_list (); - displays != NULL; - displays = displays->next) - { - - for (windows = meta_display_list_windows (displays->data); - windows != NULL; - windows = windows->next) - { - - MetaWindow *window = (MetaWindow*)windows->data; - - if (window->icon_cache.origin == USING_FALLBACK_ICON) - { - meta_icon_cache_free (&(window->icon_cache)); - meta_window_update_icon_now (window); - } - } - - g_slist_free (windows); - } -} - |