2002-03-02 Havoc Pennington * src/window.c (recalc_window_features): disable resize etc. if we're fullscreen (constrain_size): fix size constraints when fullscreen * src/display.c (meta_display_open): fix missing comma that ended up concatenating two of the properties breaking FULLSCREEN state and PING protocol 2002-03-02 Havoc Pennington * src/display.c: Add hacking to fix the problem that we made our XGrabPointer() during Alt+Tab actually succeed, so on popping down Alt+Tab we got an EnterNotify from the ungrab, which resulted in focusing the window under the mouse. i.e. Alt+Tab didn't work with sloppy focus. 2002-02-26 Havoc Pennington Screw around with Anders's ping patch so he'll get plenty of CVS conflicts. ;-) * src/display.c (meta_display_ping_window): spew warnings if we try to call this with CurrentTime (meta_display_ping_timeout): remove ping from the pending pings after it times out. * src/util.h: added PING debug category * src/display.c (remove_pending_pings_for_window): don't remove "tmp" just before "tmp->next", don't break out of loop after finding the first match (meta_display_open): no trailing comma in array init (event_callback): move the processing of ping replies into a separate function * src/screen.c (set_supported_hint): add _NET_WM_PING to supported list * src/display.h: change gpointer to void* 2002-02-26 Anders Carlsson * src/display.c: (ping_data_free), (remove_pending_pings_for_window), (meta_display_open), (event_callback), (meta_display_unregister_x_window), (meta_display_ping_timeout), (meta_display_ping_window), (meta_display_window_has_pending_pings): Implement meta_display_ping_window, and filter out scroll wheel events. * src/display.h: Add MetaWindowPingFunc, meta_display_ping_window and meta_display_window_has_pending_pings. 2002-02-24 Havoc Pennington * src/display.c (xcursor_for_op): switch on the op passed in, not the active op. Gives us the right cursor during resizing, etc. * src/errors.c: rearrange all the error stuff to adapt to the GDK change a while back, so now we print our X errors again * src/display.c (meta_display_begin_grab_op): remove KeyPressMask and KeyReleaseMask from the XGrabPointer(), this caused BadValue and kept the grab from ever succeeding. Fixes the problem with the GTK resize grip - this is why you shouldn't break your X error spew. ;-) * src/display.c: debug spew tweaks * src/window.c (meta_window_client_message): do some s/verbose/topic/ stuff 2002-02-23 Havoc Pennington * src/ui.c (meta_ui_init): fix the be-sure-we-create-coverage-cache hack 2002-02-19 Havoc Pennington * src/ui.c (meta_ui_init): put in hack to keep Pango from mangling our server grab and locking up on startup. (hack doesn't work but I want to fix it on my real computer not this laptop) * src/window.c: Implement _NET_WM_STATE_FULLSCREEN * src/display.c (meta_display_open): add atoms for _NET_WM_STATE_FULLSCREEN 2002-02-16 Kjartan Maraas * src/main.c: Use bind_textdomain_codeset etc. 2002-02-14 Havoc Pennington * src/theme-viewer.c: use the preview widget here * src/preview-widget.h, src/preview-widget.c: make the theme preview into a nice widget * src/frames.c (meta_frames_ensure_layout): replace frame layout if the frame style changes, this only ends up mattering if you e.g. changed the font size for windows in a different state such as maximized, which is crack, but the code may as well be correct * src/theme.c (meta_theme_get_frame_style): new function so we can detect an invalid cache of the PangoLayout in a frame 2002-02-14 Anders Carlsson * src/themes/Crux/metacity-theme-1.xml: Fix some bugs with prelighting. 2002-02-13 Anders Carlsson * src/theme.c (meta_pango_font_desc_get_text_height): Use pango_context_get_metrics instead of loading the font. 2002-02-12 Anders Carlsson * src/frames.c (meta_frames_manage_window): Set prelit_control to META_FRAME_CONTROL_NONE. (meta_frames_update_prelit_control): New function for setting the prelit control. (meta_frames_paint_to_drawable): Set prelight state. (meta_frames_enter_notify_event): Update prelit control. (meta_frames_leave_notify_event): Likewise. (meta_frames_motion_notify_event): Likewise. * src/frames.h (struct _MetaUIFrame): add prelit_control. * src/window.c (update_mwm_hints): and MWM_FUNC_ALL with hints->functions instead of hints->flags. 2002-02-11 Anders Carlsson * src/theme.c (meta_frame_layout_new): Set title_scale to 1.0 2002-02-11 Bastien Nocera * src/theme-viewer.c: (main): change default theme to be Atlanta like in the .schema file 2002-02-10 Havoc Pennington * src/tools/Makefile.am (EXTRA_DIST): add $(icon_DATA) * configure.in: 2.3.55 * HACKING: update * README: update 2002-02-09 Havoc Pennington * src/theme.c (meta_theme_set_current): add a newline to an error message * src/themes/Gorilla: add Gorilla theme by Jakub Steiner ported to metacity by Kenneth Christiansen 2002-02-09 Havoc Pennington * src/theme.c (meta_draw_op_draw_with_env): implement wacky "tile" draw op to lose some of the PNG files in Gorilla theme * src/theme-parser.c: parse the tile primitive 2002-02-09 Havoc Pennington * src/window.c (update_icon): port to icon cache * src/iconcache.c, src/iconcache.c: begin process of cleaning up window.c by moving the icon-reading code in here, based on the code in libwnck, which was in turn based on the earlier metacity code 2002-02-09 Havoc Pennington * src/stack.c (meta_stack_sync_to_server): hmm, and don't set last_window at all if we don't ++newp. Fixes even more obscure stacking bug. 2002-02-09 Havoc Pennington * src/stack.c (meta_stack_sync_to_server): assign last_window prior to ++newp, so we don't try to stack windows with respect to themselves. Fixes some obscure stacking bugs. 2002-02-09 Havoc Pennington * src/theme-parser.c: try to make more error message strings the same, easier for translators * src/theme.c (meta_draw_op_free): free color spec for line op (meta_theme_free): free the integer_constants hash * src/theme-parser.c (parse_boolean): move above first use * src/theme-viewer.c: fixes for theme.h changes * src/frames.c (queue_recalc_func): don't recreate layout immediately, just save title text. should speed things up. (meta_frames_set_title): just remove the layout here also, and save title text. * src/theme-parser.c (parse_toplevel_element): parse title_scale attribute on frame_geometry * src/theme.c: support setting the text size * src/frames.c: support setting the text size * theme-format.txt: updates 2002-02-09 Havoc Pennington * src/themes/Atlanta/metacity-theme-1.xml: put in some kind of distinctive frame for UTILITY, though it's ugly. Also put in the borderless look for maximized windows. * src/stack.c (compute_layer): put splash screen in the splash layer * src/stack.h (enum): create a splash screen layer * src/place.c (meta_window_place): center splashscreen, and fix a typo in the centering code * src/window.c (recalc_window_features): disable most features on splash screens * src/screen.c (set_supported_hint): add UTILITY and SPLASHSCREEN hints * src/window.c: add UTILITY, SPLASHSCREEN implementation * src/window.h (enum): add UTILITY, SPLASHSCREEN types * src/theme-parser.c (parse_toplevel_element): parser support for has_title attribute * src/theme.c (meta_frame_layout_get_borders): handle a has_title field in the layout, for utility windows that don't display a title (would be better to be able to shrink the title text, but that's kind of tricky to implement :-/) 2002-02-08 Havoc Pennington * src/screen.c (set_supported_hint): add _NET_WM_STATE_HIDDEN to _NET_SUPPORTED * src/keybindings.c (meta_set_keybindings_disabled): put in header file, to fix warning. * src/display.c (meta_display_open): add _NET_WM_STATE_HIDDEN atom * src/window.c (set_net_wm_state): set _NET_WM_STATE_HIDDEN for shaded and minimized windows (meta_window_show): call set_net_wm_state() if we map the window or frame (meta_window_hide): call set_net_wm_state() if we unmap the window or frame 2002-02-08 Havoc Pennington * src/window.c (set_net_wm_state): only set skip pager/tasklist if the app set it, don't set it again based on semantic type. 2002-02-08 Anders Carlsson * src/theme.c (scale_and_alpha_pixbuf): If we're only scaling horizontally or vertically, use GDK_INTERP_NEAREST. 2002-02-08 Havoc Pennington * autogen.sh: unbreak 2002-02-08 Havoc Pennington * src/display.c (meta_display_grab_focus_window_button): grab buttons 2 and 3 also, so you can focus a window with those, #70840 (event_callback): fix this to let you focus a window with any unmodified click, and also with Alt+button1 * configure.in (AC_OUTPUT): add po/Makefile.in * autogen.sh: port to glib-gettextize, remove stupid auto-find-subdirs crap * Makefile.am (SUBDIRS): add po to subdirs, #70615 * src/window.c (meta_window_activate): unshaded window if shaded, I thought this was in bugzilla but I don't see it. anyway thanks whoever mentioned it to me. 2002-02-08 Havoc Pennington * src/tools/metacity-window-demo.c (menu_items): add modal dialog test 2002-02-08 Havoc Pennington * src/window.c (meta_window_show): when mapping a window with struts, invalidate the work areas it's on. Should fix at least part of the problem with windows maximizing over panels. * src/workspace.c (meta_workspace_invalidate_work_area): also queue move/resize on sticky windows * src/tools/Makefile.am: consolidate reload-theme, restart into a "metacity-message" app and add enable/disable keybindings to the messages it knows about. * src/keybindings.c: (meta_change_keygrab): grab keyboard synchronously (meta_display_process_key_event): if all keybindings are toggled off, ReplayKeyboard, else AsyncKeyboard, except that the debug binding for toggling back on is always processed (meta_set_keybindings_disabled): function to disable/enable all keybindings 2002-02-07 Havoc Pennington * src/run-metacity.sh: if DEMO_TEST is set then run the window demo * src/tools/metacity-window-demo.c: Create an app with all the semantic window types, for testing and for designing themes. 2002-02-07 Havoc Pennington Throughout: move to meta_topic rather than meta_verbose so metacity.log can start being more useful * src/util.h (enum): add more debug topics * src/frames.c: clean up some cruft that caused warnings 2002-02-07 Havoc Pennington * src/theme.c (colorize_pixbuf): do random voodoo on the algorithm 2002-02-07 Havoc Pennington * src/theme.c (colorize_pixbuf): use the intensity of the gray pixel for both saturation and value, not just value. 2002-02-07 Havoc Pennington * src/theme.c (INTENSITY): don't define the macro twice 2002-02-07 Havoc Pennington * src/theme.c (colorize_pixbuf): get algorithm right (use HSV/RGB conversion) at cost of making it a lot slower. It doesn't matter anyhow with the cache, though. 2002-02-06 Havoc Pennington * src/theme.c (colorize_pixbuf): handle out-of-memory creating target pixbuf * src/themes/Crux/*.png: convert the green-channel images to grayscale 2002-02-06 Havoc Pennington * src/prefs.c (change_notify): s/update_focus_mode/update_theme/ in case of theme key changing 2002-02-06 Havoc Pennington * src/theme-viewer.c: benchmark theme on startup * src/theme-parser.c (parse_draw_op_element): fix "colorize != NULL" to "colorize_spec != NULL" and free pixbuf on color spec failure * src/theme.c (colorize_pixbuf): minor reformatting, raise function calls out of inner loop, clamp r/g/b values to uchar range before assigning to uchar (draw_op_as_pixbuf): cache the colorized pixbuf (meta_draw_op_free): free the cache pixbuf 2002-02-07 Anders Carlsson * src/theme-parser.c: (parse_draw_op_element): Add support for "colorize" image attribute. * src/theme.c: (colorize_pixbuf): New function that colorizes a pixbuf. (pos_tokenize): Allow "\n" as a whitespace character. (meta_draw_op_free): Free colorize_spec; (draw_op_as_pixbuf): Colorize image if needed. * src/theme.h: Add colorize_spec to struct. 2002-02-07 Anders Carlsson * src/themes/Crux/metacity-theme-1.xml: Add maximized and shaded_and_maximized frame styles. 2002-02-06 Havoc Pennington * src/main.c (prefs_changed_callback): redo window sizes/appearance when the theme changes * src/display.c (meta_display_retheme_all): new function * src/theme-parser.c (locate_attributes): remove error handling for MAX_ATTRS reached, add an assert instead, the way this code ended up the attrs in the array depend on the code not the theme file. 2002-02-06 Havoc Pennington * src/main.c (main): disable custom log handler and fatal mask for now * src/theme.c (meta_draw_op_list_draw): Add META_DRAW_CLIP * src/main.c: load theme, monitor current theme setting * src/prefs.c: add "current theme" setting * src/stack.c (meta_stack_free): don't try to free last_root_children_stacked if it doesn't exist * src/themewidget.c: pluggable GtkMisc subclass to use for menu icons * src/screen.c (meta_screen_manage_all_windows): fix signed/unsigned warning * src/frames.c: port to theme system (meta_frames_style_set): chain up * theme-format.txt: new file * configure.in: add more compiler warnings * src/theme.c: add various stuff needed to get theme parser working. Remove the "spacer" concept from FrameLayout object. Add draw op that references a draw op list. * configure.in: require GTK 1.3.13 * src/Makefile.am: add theme-parser.[hc], implement loading a theme * src/theme.c: add "draw title" and "draw window icon" operations (meta_draw_op_draw): put object_width/object_height in expression environment before computing x/y. Handle out-of-memory when creating pixbufs. Assorted other cleanups. 2002-02-07 Anders Carlsson * src/themes/Crux/metacity-theme-1.xml: Simplify things so we can remove some now unnecessary .png files. * src/themes/Crux/*.png: Remove some files. 2002-02-07 Anders Carlsson * src/themes/Crux/metacity-theme-1.xml * src/themes/Crux/*.png: Add Crux theme 2002-02-07 Kenneth Rohde Christiansen * configure.in: add da to ALL_LINGUAS * po/da.po: add Danish translation 2002-02-02 Havoc Pennington * src/theme-viewer.c: test % operator * src/theme.c (pos_tokenize): add % to switch for operators * src/theme.c: rework theme stuff so we have MetaDrawOp/MetaDrawOpList instead of MetaTextureSpec/MetaShapeSpec 2002-01-28 Havoc Pennington * src/theme.c (meta_texture_spec_render): fix shadowed variable (stupid -Wall should have that) * src/theme-viewer.c (main): implement a simple viewer for frame styles * src/theme.c (meta_frame_style_get_test): create partial frame style to test drawing 2002-01-27 Havoc Pennington * src/theme.c (meta_shape_spec_draw): implement (meta_texture_spec_draw): implement shape spec and blank texture support (meta_frame_style_draw): implement 2002-01-27 Havoc Pennington * src/display.c (meta_set_syncing): move in here so util.c doesn't require display.[hc] * src/theme.h, src/theme.c: implement coordinate expression parser, write MetaShapeSpec declaration * src/util.c (meta_exit): move in here so we can link to util.c with a different main() * src/theme.h: rename the MetaWindow* enums to MetaFrame* 2002-01-27 Peteris Krisjanis * configure.in - Added lv to ALL_LINGUAS 2002-01-27 Havoc Pennington * src/frames.c (get_control): Only consider the bottom of the titlebar a resize control; I keep accidentally resizing windows instead of activating them. Also, give south resizing priority over north, if the window is so small the active regions overlap * src/theme.c: add MetaTheme, get MetaFrameStyleSet into a usable state * src/common.h: move window type back to window.h, decided not to use it on frame side (MetaFrameType): add this instead 2002-01-27 Havoc Pennington * src/theme.h, src/theme.c: implement all kinds of crazy compositing-one-texture-onto-another BS. 2002-01-27 Havoc Pennington * src/display.c (event_callback): make the check for whether to eat focus click a lot more complicated * src/window.c (meta_window_same_application): new function * src/prefs.h, src/prefs.c: add application based pref * src/metacity.schemas: add "application_based" setting to give me a mode to fool with being application based, without being unusable in the meantime. Yeah the crack flows freely these days. Everyone knew it would happen. 2002-01-27 Havoc Pennington * src/frames.c: separate code to draw frame from the expose_event handler, so in principle we can draw the frame to a pixmap, but this isn't used yet. 2002-01-22 Hasbullah Bin Pit * configure.in: Added Malay (ms)to ALL_LINGUAS. * po/ms.po: Added Malay Translation. 2002-01-19 Havoc Pennington * src/wm-tester/test-resizing.c: cheesy client with static bit gravity, used to test the below change. * src/window.c (meta_window_move_resize_internal): implement Owen's proposal for window resizing. http://mail.gnome.org/archives/wm-spec-list/1999-November/msg00088.html Currently you have to do METACITY_USE_STATIC_GRAVITY=1 in order to use it, because some GDK bug is screwing up exposes on my frames when it's enabled. * src/display.c (meta_display_create_x_cursor): fix glyph for NE/NW cursors * src/frames.c (get_control): add ability to resize from top * src/frame.c (meta_frame_get_flags): can't resize shaded windows (meta_frame_sync_to_window): add gravity arg * src/common.h (MetaWindowType): move here from window.h so it can be used in themes stuff. (MetaFrameFlags): remove META_FRAME_TRANSIENT since it overlaps with window type and was unused. 2002-01-18 Havoc Pennington * src/window.c (constrain_position): give priority to keeping NW corner onscreen rather than SE, if we need to shift the window to fit inside constraints * src/frames.c (meta_frames_get_geometry): don't depend on the current window size * src/theme.c: move geometry stuff in here, to be calculated as part of the theme * src/core.c (meta_core_get_client_size): new function to replace meta_core_get_frame_size() so we don't have weird cycles in the geometry calculation 2002-01-12 Havoc Pennington * src/window.c (meta_window_queue_move_resize): make this actually queue, rather than being synchronous as it was before. We'll see what breaks. Should be more efficient and reduce flickery stuff a bit in some cases. 2002-01-15 Havoc Pennington * src/keybindings.c (handle_tab_backward): fix crash when grab failed due to another operation in progress (handle_tab_forward): fix crash when grab failed 2002-01-10 Havoc Pennington * src/frame.c (meta_window_destroy_frame): only bump unmaps_pending if the window was mapped (meta_window_ensure_frame): ditto * src/keybindings.c: change arrow key bindings to use Ctrl+Alt not just Alt, and add debug mode key bindings * src/stack.c (meta_stack_get_default_focus_window): don't choose a default focus window with unmaps pending, since we probably just unmapped it. * src/display.c (event_callback): move notify_focus on UnmapNotify after the window_free check, so we can move focus to another window when we unmanage * src/window.c (meta_window_hide): invalidate work areas when hiding a window with struts (meta_window_free): invalidate work areas when unmanaging a window with struts 2002-01-09 Havoc Pennington * src/window.c, src/window.h: store strut information, update it on property changes, etc. etc. so we avoid panel on maximize. * src/workspace.c (meta_workspace_get_work_area): add accessor for work area so we can compute it lazily * src/display.h, src/display.c: add _NET_WM_STRUT atom and _WIN_HINTS atom 2002-01-08 Havoc Pennington * configure.in (ACLOCAL): add code to save ACLOCAL_FLAGS * src/frames.c (meta_frames_expose_event): max dither * src/testgradient.c (render_simple): change dither mode to MAX to avoid banding * src/theme.c: lose the gradient cache, and put in some initial data types for the theme format 2002-01-07 Havoc Pennington * src/frames.c (meta_frames_expose_event): make gradient a bit more subtle (don't go to the full background, but to a blend of selection and background; put lighter color on top) 2002-01-06 Havoc Pennington * src/window.c (meta_window_notify_focus): rearrange code a bit to make it clear that has_focus flag always follows display->focus_window 2002-01-06 Havoc Pennington * src/window.c (meta_window_notify_focus): put in attempted fix for the GTK 1.2 plug/socket screwup, now that my fixed debug spew reveals what's actually happening. ;-) * src/gradient.c (meta_gradient_description_new): object to store gradient descriptions * src/window.c (meta_window_notify_focus): fix the debug spew that was confusing me * src/wm-tester/focus-window.c: add little program to focus a window ID 2002-01-06 Havoc Pennington * src/theme.c (meta_theme_get_gradient): change to use spiffy gradient code. * src/gradient.c: copy lovely gradient code from WindowMaker, as usual Dan and Alfredo have very nice code 2002-01-06 Fatih Demir * configure.in: Added "tr" to the languages list. 2002-01-05 Havoc Pennington * src/frames.c (meta_frames_expose_event): draw titlebar highlight with snazzy gradient that needs some tweaking to be less dumb-looking * src/theme.c: replace old theme.[hc] contents with newer stuff that doesn't do anything 2002-01-05 Havoc Pennington GTK 1.2 plug/socket clients still broken, don't know why. * src/screen.c (meta_screen_new): select focus change on root window, for debugging * src/display.c (event_callback): when unfocusing, use no_focus_window to hold the focus * src/display.h (struct _MetaDisplay): have a no_focus_window to hold the focus when we don't want to have anything focused. Then we can avoid confusing focusing-the-frame stuff. * src/window.c (meta_window_notify_focus): improve some debug spew (meta_window_notify_focus): add hack from WindowMaker to ignore focus in events with detail > NotifyNonlinearVirtual 2002-01-04 Havoc Pennington * src/display.c (event_callback): don't lower docks when a grab causes them to get LeaveNotify 2002-01-04 Havoc Pennington * src/screen.c (meta_screen_free): set event mask on root window to 0 so other window managers (such as ourselves restarting) can start up; addresses race condition on restart where the old WM still had RedirectMask when the new WM was trying to start up. * src/display.c (meta_display_close): free each screen * src/window.c (meta_window_show): always focus new windows in click-to-focus mode 2002-01-03 Havoc Pennington * src/window.c: use meta_XFree not XFree * src/display.h (meta_XFree): add null-safe XFree * src/util.c (meta_warning): have message prefix indicate that it's a warning (meta_fatal): indicate it's an error * src/window.c (update_sm_hints): clean up using meta_prop_get_latin1_string (update_role): ditto (read_client_leader): clean up using meta_prop_get_window (update_net_wm_type): clean up using meta_prop_get_cardinal (update_initial_workspace): ditto (update_net_wm_type): clean up using meta_prop_get_atom_list (read_rgb_icon): get result from XGetWindowProperty return value not from error trap (update_kwm_icon): ditto (meta_window_new): fix to read WM_STATE correctly 2002-01-03 Havoc Pennington * src/window.c (update_net_wm_state): clean up using meta_prop_get_atom_list (update_mwm_hints): clean up using meta_prop_get_motif_hints * src/Makefile.am (metacity_SOURCES): add xprops.[hc] * src/xprops.c: new file with convenience functions for X properties 2002-01-03 Havoc Pennington * src/workspace.c (meta_workspace_activate): focus top window when switching to a new workspace * src/util.c (meta_topic): start putting verbose output in categories * src/window.c (meta_window_shade): focus frame after we queue the calc_showing so the maps/unmaps have already happened. * src/display.c (meta_display_get_current_time): add the "get time of current event" function and call it occasionally. * src/window.c (meta_window_free): if we have focus, call meta_screen_focus_top_window(). (meta_window_minimize): ditto (meta_window_delete): ditto * src/screen.c (meta_screen_ensure_tab_popup): fix memory leak - didn't free tab list (meta_screen_focus_top_window): new function to use when we unmap or unmanage a focused window * src/stack.c (meta_stack_get_default_focus_window): function used in meta_screen_focus_top_window 2001-12-21 Havoc Pennington * src/frame.c (meta_window_ensure_frame): add a server grab here since we were failing to have one when calling the function 2001-12-27 Duarte Loreto * configure.in: Added portuguese to ALL_LINGUAS 2001-12-16 Kjartan Maraas * configure.in: Added "no" to ALL_LINGUAS. 2001-12-11 Stanislav Visnovsky * configure.in: Added "sk" to ALL_LINGUAS. 2001-12-10 Havoc Pennington Rework the click-client-area-to-focus support to use synchronous grabs, avoids a big mess, lets us pass through click when required (for dock/desktop). Disadvantage is all left-button clicks now require window manager approval. ;-) * src/display.c (event_callback): don't focus dock/desktop when the mouse enters them; require a click. (meta_change_button_grab): allow sync grabs (meta_display_grab_unfocused_window_buttons): establish a synchronous grab and maintain it all the time, rename to meta_display_grab_focus_window_button * src/window.c: change to reflect display.c 2001-12-10 Havoc Pennington * src/window.c (meta_window_update_unfocused_button_grabs): oops, unbreak this _again_ - reported by Josh Barrow 2001-12-10 Havoc Pennington * src/window.c (meta_window_update_unfocused_button_grabs): don't allow grab on docks/desktop for now; needs fixing later to do the grab, but pass thru click, so we can focus those windows. And in fact we need to do that even in sloppy mode. 2001-12-10 Havoc Pennington * src/screen.c (meta_screen_foreach_window): fix broken "tmp = tmp->data" Implement do-not-pass-thru-click for click-to-focus mode. * src/screen.c (update_focus_mode): when focus mode changes, update all the window grabs * src/display.c (meta_display_grab_unfocused_window_buttons): implement grabbing button 1 on client area of unfocused click-to-focus windows * src/window.c (meta_window_update_unfocused_button_grabs): update whether we're grabbing unmodified button 1 on client area according to focus state and focus mode (meta_window_new): start out with proper grab state 2001-12-10 Havoc Pennington * src/menu.c (meta_window_menu_new): don't do mnemonics for workspaces above 9 2001-12-10 Havoc Pennington * src/screen.c (meta_screen_new): oops, remove extra workspace creation, and update to current pref. 2001-12-09 Havoc Pennington * src/workspace.c (meta_workspace_free): update number of workspaces hint * src/screen.c (update_num_workspaces): implement number of workspaces setting * src/window.c (meta_window_configure_request): honor configure requests on windows of type NORMAL, but still be mean to those of type DIALOG * src/main.c (main): add more log domains to those we set a log handler for, and only set warnings fatal in debug mode * src/metacity.schemas: add number of workspaces setting 2001-12-09 Havoc Pennington * src/display.c (event_callback): in click-to-focus mode don't focus on enter notify. Implement unfocusing on LeaveNotify in mouse focus mode. Click to focus just ends up working if we do nothing on enter/leave, because of the way things already worked. Except I need to add some relatively complex hack to allow clicking on client area, right now you have to click on the frame. 2001-12-09 Havoc Pennington * src/main.c (main): move SM init a bit later in the process, and init prefs * src/session.c: fix no SM case (though I hardly know why I'm bothering) * src/main.c (main): call bindtextdomain * src/util.h (_): actually call gettext * configure.in: put in AM_GLIB_GNU_GETTEXT and gconf stuff * src/prefs.c: Preferences - this marks the beginning of our doom. None of them are actually implemented yet, but we monitor some stuff from gconf. 2001-12-07 Havoc Pennington * src/window.c (meta_window_unminimize): when unminimizing an app, if we're in "show desktop" (all windows minimized) mode, leave show desktop mode. Will occasionally be a bit weird, but allows people to recover via task list if they accidentally do the show desktop thing, and don't know what's going on. 2001-12-06 Havoc Pennington * src/ui.c (meta_text_property_to_utf8): fix gdkatom/xatom screwup - gee, I should read my warnings 2001-12-03 Laszlo Peter * src/frames.c: add a dummy element to the enum so the signals array is not empty. (breaks the build with Forte C) * src/window.c: s/__FUNCTION__/G_GNUC_FUNCTION/ 2001-11-27 Havoc Pennington * src/window.c (constrain_position): change so that window can be offscreen to the bottom or the right, as long as a small top-left corner of the window remains onscreen. However, windows still can't go off the left or top. 2001-11-26 Havoc Pennington * src/window.c (window_query_root_pointer): add error trap 2001-11-27 Jesus Bravo Alvarez * configure.in: Added gl (Galician) to ALL_LINGUAS. Tue Nov 20 18:49:16 2001 Owen Taylor * configure.in (found_sm): Add some additional quoting to make it work with autoconf-2.5x. 2001-11-02 Laszlo Peter * src/window.c (update_sm_hints): protect meta_verbose from a NULL pointer. 2001-10-29 Havoc Pennington * configure.in: bump version 2001-10-29 Havoc Pennington * src/window.c (idle_calc_showing): handle queue/unqueue of calc showings as we are iterating over the pending list (meta_window_show): focus placed transients in here instead of in meta_window_place - now it should actually work, yay * src/place.c (meta_window_place): remove focusing of transient child from here; this was really broken 2001-10-29 Yuriy Syrota * configure.in: Added "uk" to ALL_LINGUAS. 2001-10-29 Havoc Pennington * README: note exciting new unminimize feature for the tab popup * src/keybindings.c (process_tab_grab): use meta_window_activate() when choosing a window with tab popup, this should deiconify it * src/window.c (meta_window_client_message): use meta_window_activate for _NET_ACTIVE_WINDOW message (meta_window_activate): new function to raise/focus/unminimize (meta_window_flush_calc_showing): new function (meta_window_focus): force a calc showing on focus, so that we can focus the window if appropriate (it must be mapped) 2001-10-26 Havoc Pennington * src/display.c (meta_display_grab_window_buttons): fix for ignoring NumLock on Alt-windowclick (previous NumLock fix was only for key grabs not button grabs) 2001-10-25 Havoc Pennington * src/window.c (meta_window_new): set the current workspace hint 2001-10-25 Havoc Pennington * src/window.c (meta_window_visible_on_workspace): I was using meta_workspace_contains_window() in a number of places where on_all_workspaces should also have been considered, thus this new function. Fixes bugs such as pinned windows not appearing in the tab order. (meta_window_client_message): use meta_window_visible_on_workspace * src/stack.c (find_tab_forward): ditto (find_tab_backward): ditto (meta_stack_get_tab_next): ditto (meta_stack_get_tab_list): ditto * src/place.c (get_windows_on_same_workspace): ditto * src/keybindings.c (handle_focus_previous): ditto (handle_focus_previous): ditto 2001-10-24 Havoc Pennington * src/frames.c (meta_frames_expose_event): use bg/fg not base/text for the window title area. 2001-10-24 Havoc Pennington * src/window.c (meta_window_new): support initial on-all-workspaces setting 2001-10-22 Havoc Pennington * src/stack.c (meta_stack_sync_to_server): fix to keep desktop window from appearing on top of everything else, among other stack bugs. Untested. 2001-10-15 Havoc Pennington * src/window.c (meta_window_new): use queried attributes to check whether window should be initially maximized, rather than window rect 2001-10-15 Havoc Pennington * src/main.c (meta_restart): add a restart feature, for debugging * src/tools/metacity-restart.c: little utility program to trigger the restart 2001-10-14 Havoc Pennington * src/frames.c (meta_frames_button_press_event): raise/focus windows on left-click, seem to have broken that yesterday * src/keybindings.c, src/display.c, src/window.c: add keybinding to show/hide all normal windows (so you can see the desktop). Currently Ctrl+Alt+D, which I don't like, but yay. 2001-10-14 Havoc Pennington * src/window.c (meta_window_new): take a window mapped at fullscreen size/pos to desire maximization; once I add a fullscreen state, will change to copy kwin and take this mapping as a desire for fullscreen, but for now testing with maximization. * src/window.h: remove fullscreen window type, now proposing it as a window state instead. 2001-10-14 Havoc Pennington * src/window.c (meta_window_maximize): always raise windows on maximize (meta_window_client_message): when activating a window, move it to current workspace, instead of moving user to the window's workspace. 2001-10-14 Héctor García Álvarez * configure.in: Added "es" to ALL_LINGUAS for Spanish translation. 2001-10-14 Havoc Pennington * src/display.c (event_callback): only handle events here if the modmask from our button grab is active. i.e. only the Alt-click is handled here. * src/frames.c: add check for whether button presses are in the frame client area before handling them, so we don't weirdly let you move a frame by clicking in its client area if the client hasn't selected button press events. 2001-10-13 Havoc Pennington * src/stack.c (meta_stack_sync_to_server): set last window before setting newp, so we don't get the current window as the last window and screw everything up (IN_TAB_CHAIN): use type not layer to decide if a window is in the tab chain, keeps panel out of alt-tab choices 2001-10-13 Havoc Pennington * configure.in: add bad hack to work with GTK 1.3.9.90 RPMs from gnomehide for now * src/ui.c: another piece of bad hack in here 2001-10-13 Havoc Pennington * configure.in: bump version 2001-10-13 Havoc Pennington * src/session.c (meta_session_init): hmm, fix build 2001-10-12 Havoc Pennington * src/session.c (meta_session_init): set the session manager priority so we start up before other apps. 2001-10-12 Mikael Hallendal * src/ui.c (meta_ui_get_default_window_icon): use gdk_pixbuf_new_from_inline (meta_ui_get_default_mini_icon): use gdk_pixbuf_new_from_inline 2001-10-11 Christian Rose * configure.in: Added "sv" to ALL_LINGUAS. 2001-10-10 Havoc Pennington * src/stack.c (meta_stack_free): fix mem leak of the MetaStack object (meta_stack_sync_to_server): try to avoid the restack-flicker thing 2001-10-07 Havoc Pennington * src/display.c (meta_display_update_active_window_hint): set _NET_ACTIVE_WINDOW hint * src/window.c (meta_window_client_message): support _NET_ACTIVE_WINDOW client message 2001-10-07 Havoc Pennington * src/window.c (meta_window_client_message): don't allow shade/maximize/minimize for windows that don't support those operations. (minimizing the panel = bad) 2001-10-04 Havoc Pennington * src/keybindings.c (meta_change_keygrab): add code to grab all modifier combinations, so keybindings work with NumLock etc. * src/menu.c (meta_window_menu_new): remove newlines from menu items 2001-09-27 Havoc Pennington * src/session.c (save_state): when encoding text for session file, escape XML entities 2001-09-21 Alex Graveley * src/Makefile.am (metacity_SOURCES): Add inlinepixbufs.h so that it gets generated. * src/frames.c (meta_frames_style_set): Update for new opaque PangoFontMetrics. 2001-09-17 Havoc Pennington * src/ui.c (meta_ui_init): add hackaround for the warning about gtk-menu-bar-accel 2001-09-17 Havoc Pennington * src/ui.c (meta_ui_get_default_mini_icon): (meta_ui_get_default_window_icon): ref the returned icon, oops. * src/main.c (main): get the GLib warning/error output into the metacity logfile, set warnings to be always fatal * configure.in: bump version to 2.3.13 * src/window.c (get_text_property): hrm, fix bug where we didn't check errors on XGetTextProperty 2001-09-17 Havoc Pennington * src/Makefile.am (VARIABLES): fix srcdir != builddir glitch 2001-09-17 Havoc Pennington * src/ui.c: use the inline image data for default icon * src/common.h (META_MINI_ICON_HEIGHT): move icon size defines here * src/Makefile.am: Create an inlinepixbufs.h header with inline images 2001-09-16 Havoc Pennington * src/session.c (process_ice_messages): disconnect this callback on error 2001-09-16 Havoc Pennington * src/window.c (meta_window_lower): new function * configure.in: bump version to 2.3.8 * src/display.c (event_callback): raise dock on enter notify, lower it on leave notify (need to refine this behavior) * src/stack.c (compute_layer): experiment with putting the panel in the normal layer, and raising it on mouseover 2001-09-15 Havoc Pennington * src/window.c: add support for a mini icon in the titlebar (update_icon): re-enable support for _NET_WM_ICON * src/session.c (save_state): add an ferror check when writing session file 2001-09-11 Havoc Pennington * src/main.c (usage): exit with error code on usage() (kind of wrong for --help, but oh well). 2001-09-11 Havoc Pennington * src/window.c: fix up handling of text properties, so we get UTF8_STRING as that type and not as text list, and so we properly convert from text list to UTF-8 2001-09-10 Havoc Pennington * src/menu.c (meta_window_menu_new): icon for unmaximize * src/ui.c (meta_ui_init): fix call to XDisplayName * src/util.c: add missing header * src/frames.c: draw an unmaximize control if already maximized 2001-09-10 Havoc Pennington * src/window.c: Don't separate user_has_moved/user_has_resized, fixes bug in east-resizing Emacs, among other things * src/frame.c (meta_frame_sync_to_window): return immediately if nothing to do * src/util.c (ensure_logfile): replace rather than truncate old logfiles 2001-09-08 Havoc Pennington * src/ui.c (meta_ui_init): don't use gdk_display_name * src/frame.c (meta_window_ensure_frame): create frame with screen default visual, rather than client window visual; for DRI games, the client window visual was not allowed to be a child of another window with the same visual, apparently. Anyhow now we copy twm, etc. so it must be correct. * src/place.c (meta_window_place): if a transient is placed and its parent has focus, focus the transient. 2001-09-06 Havoc Pennington * configure.in: bump version 2.3.5, require newer GTK release 2001-09-04 Havoc Pennington * src/wm-tester/Makefile.am (noinst_PROGRAMS): make test apps noinst * src/metacity.desktop: for the capplet * src/Makefile.am: add .desktop file 2001-09-01 Havoc Pennington * src/errors.c: clean up the code, and replace GDK X error handler with one that chains up to GDK but first logs the error to logfile. 2001-08-31 Havoc Pennington * src/tabpopup.c (meta_ui_tab_popup_new): fix args to gtk_alignment_new() 2001-08-29 Havoc Pennington * src/display.c (event_callback): avoid focusing a window on tab popup popdown * src/screen.c (meta_screen_ensure_tab_popup): compute frame outline size here 2001-08-29 Havoc Pennington * src/tabpopup.c: Switch back to outline. 2001-08-29 Havoc Pennington * src/tabpopup.c: experiment with window-cover-with-icon instead of just the outline; can't decide. 2001-08-29 Havoc Pennington * src/tabpopup.c: add crackrock window-outlining feature * src/session.c (window_type_to_string): handle fullscreen 2001-08-29 Havoc Pennington * src/display.c (meta_display_open): wrong atom name - _NET_SUPPORTED not _NET_WM_SUPPORTED * src/window.c (meta_window_configure_request): geez, why were we honoring configure requests for width/height for normal windows. Denied! (meta_window_client_message): _NET_WM_MOVERESIZE support, sort of (doesn't quite work, acts like owner_events = true?) * src/display.c: add _NET_WM_MOVERESIZE atom 2001-08-28 Havoc Pennington Unbreak tab popup a bit. * src/stack.c (meta_stack_get_tab_list): add workspace argument (meta_stack_get_tab_next): add workspace argument * src/window.c: implement recording of the last user-initiated window position, so we can magically handle moving panels around really nicely. * src/wm-tester/main.c (set_up_icon_windows): fix to use new GTK API 2001-08-24 Havoc Pennington * src/window.c (constrain_position): force fullscreen windows to be at 0,0 * src/ui.c: use NULL colormap to get bitmaps, requires very latest GTK from CVS or it will spew warnings and not work. * src/window.c (constrain_size): disallow larger than screen in all cases, even if user has performed a resize operation. (constrain_position): keep window boxed onscreen. * src/keybindings.c (meta_display_process_key_event): revert an earlier change that disabled global keybindings when a grab is in effect; instead, only disable global keybindings if a _keyboard_ grab is in effect. The earlier change was just a broken workaround, the problems it fixed should have been solved by the addition of XGrabKeyboard() on the metacity keyboard grabs. This should fix the problem with pick-up-window-and-move-to-another-desktop. 2001-08-23 Havoc Pennington * src/window.c (update_icon): attempt to use the mask as well as the pixmap. Probably doesn't work so well. * src/tabpopup.c: make this look a little nicer 2001-08-22 Havoc Pennington * src/window.c (update_mwm_hints): all the MWM flag tests were backward 2001-08-22 Havoc Pennington * src/window.c (update_icon): half-ass implementation of getting pixmap icons (WM_NORMAL_HINTS and KWM_WIN_ICON). Ignores mask for now, with possibly ugly results for some apps. (read_rgb_icon): fixage 2001-08-19 Havoc Pennington * src/window.c: add a "fullscreen" semantic type; if a window requests the screen size exactly, and is undecorated, and is not a desktop window, we consider it a fullscreen window and keep it on top. Totally untested. 2001-08-19 Havoc Pennington * src/screen.c (set_supported_hint): we support _NET_WM_ICON * src/wm-tester/main.c: add stuff to test _NET_WM_ICON (but it doesn't work, so it isn't tested yet) * src/window.c (update_icon): read _NET_WM_ICON * src/screen.c (meta_screen_new): set the WM_ICON_SIZE hint * src/tabpopup.c (meta_ui_tab_popup_select): remove assertion * src/window.c (meta_window_get_icon_geometry): fix obscure memleak 2001-08-19 Havoc Pennington * src/display.c (meta_display_grab_window_buttons): remove XSync, error traps already do that (meta_display_grab_window_buttons): implement * src/keybindings.c: src/display.c: wire up the tab window, it rulez! 2001-08-19 Havoc Pennington * src/tabpopup.c: add prototype thingy to display windows we're cycling through with tab. Not wired up to keybindings yet. 2001-08-18 Havoc Pennington * src/effects.c (meta_effects_draw_box_animation): put an XFlush() right after starting things moving 2001-08-18 Havoc Pennington * src/window.c (meta_window_configure_request): (meta_window_move_resize_internal): Make a half-hearted not-very-tested attempt to handle window resizes correctly with respect to window gravity. 2001-08-18 Havoc Pennington * src/window.c (meta_window_get_gravity_position): hrm, I fixed this wrong the other day. Fixes static gravity when moving windows. 2001-08-18 Havoc Pennington * src/ui.c (meta_image_window_set_position): also set the current size. Lame hack of the day. * src/effects.c (effects_draw_box_animation_timeout): use the delay exposes feature to avoid the screen dirt * src/ui.c (meta_ui_push_delay_exposes): (meta_ui_pop_delay_exposes): feature to let us delay redraws until after we do server-grabbed draw-on-inferiors effects 2001-08-17 Havoc Pennington * src/window.c (meta_window_get_gravity_position): fix for StaticGravity 2001-08-09 Havoc Pennington * src/window.c (meta_window_configure_request): Honor USPosition even post-map. I know I'll regret this. 2001-08-07 Havoc Pennington * src/display.c (meta_display_open): set _NET_WM_NAME hint as a UTF8_STRING not STRING. Patch from Anders. 2001-08-06 Havoc Pennington * src/effects.c: disable opaque animations by default, current implementation suXors. 2001-08-06 Havoc Pennington * src/effects.c (meta_effects_draw_box_animation): Get start time after we do the pixbuf from drawable, so we don't count time spent getting pixbuf from drawable in the animation time. 2001-08-06 Havoc Pennington * src/effects.c: add opaque minimize/shade feature. The wireframe seemed kind of confusing and unclear from a UI standpoint. I know, I know. The bloat begins here. Also, we don't need to grab the server during opaque min/shade, which has some nice implications. * src/ui.c: Add features to render a window with an image in it, and also wrap pixbuf_from_drawable * src/effects.c (meta_effects_draw_box_animation): modify to be smoother (at least theoretically) by syncing to current time and "dropping frames" as appropriate. * src/window.c (meta_window_shade): draw animation for shading too 2001-08-05 Anders Carlsson * src/display.h, src/display.c: Add _NET_WM_ICON_GEOMETRY atom. * src/window.c (meta_window_calc_showing): See if the window has an icon geometry and show a morphing animation from the window's coordinates to the icon's coordinates. (meta_window_get_icon_geometry): New function that fetches a window's icon geometry. * src/Makefile.am: Add effects.[ch]. * src/effects.c: New file with cool effects. 2001-08-03 Havoc Pennington * src/keybindings.c: Add Alt + left/right arrow to move between workspaces. * src/screen.c (set_wm_check_hint): put property pointing back to itself on the _WIN_SUPPORTING_WM_CHECK window. 2001-08-03 Havoc Pennington * src/display.c (event_callback): push error trap around configure of withdrawn window, fixes a crash caused by rapidly creating/destroying a window. * src/window.c (recalc_window_features): don't allow shading undecorated windows. * src/wm-tester/main.c: add a program to torture window managers. 2001-08-01 Havoc Pennington * src/window.c (recalc_window_features): if a window isn't resizeable, turn off maximize function. If min size is equal to max size, turn off resize function.