2002-04-05 Havoc Pennington * src/stack.c: remove the unused tab stuff * src/display.c: implement tab list among panels * src/keybindings.c: fill in move-between-panels keybindings 2002-03-31 Johan Dahlin * src/menu.c (meta_window_menu_new): Make sure all menu items are translated. 2002-03-27 Havoc Pennington * src/window.c (meta_window_free): remove unmanaged windows from save set, and unselect input so we don't get events from them. Fixes annoying bug where withdrawn windows would decide to map themselves due to save set stuff. 2002-03-22 Zbigniew Chyla * configure.in (ALL_LINGUAS): Added pl (Polish). 2002-03-21 Havoc Pennington * src/themes/Bright/metacity-theme-1.xml: Added "Bright" theme from Gaute Lindkvist, with some small clipping tweaks to keep text/icons from overlapping their frames. 2002-03-19 Havoc Pennington * src/resizepopup.c (place_vertical_size_window) (place_horizontal_size_window): disable the little shaped windows with the window size, they caused a crash anytime you tried to resize with Xft. And they were kind of on crack anyway. 2002-03-17 Havoc Pennington * src/resizepopup.c (ensure_tick_windows): turn off the tick marks, that got annoying after about 5 minutes. One big shape window instead of lots of little windows might fix it. 2002-03-17 Havoc Pennington * src/resizepopup.c: Add some total crackrock resize-grid indication for windows that have width_inc/height_inc so I can debug gnome-terminal sizing. 2002-03-17 Havoc Pennington * src/session.c (set_clone_restart_commands): use proper property name for SmDiscardCommand (instead of setting the clone command to "rm"). Also fix typo that iterated over clonev not discardv to fill in prop list, and NULL-terminate discardv. #74584 from Kang Jeong-Hee. 2002-03-13 Havoc Pennington * src/main.c (main): put back --sm-client-id argument, needed for including us in a default session 2002-03-13 Havoc Pennington * src/session.c (meta_session_init): don't save a file here, only in response to SaveYourself. Change the code to properly use a unique state file for each SaveYourself. Totally, totally untested. 2002-03-12 Havoc Pennington * src/theme-viewer.c: improve the theme viewer so people can see the broken aspects of their themes. 2002-03-11 Havoc Pennington * src/keybindings.c: use new functions * src/display.c (meta_display_get_tab_next): (meta_display_get_tab_list): new tab order functions using MRU list instead of map order * src/window.c (meta_window_notify_focus): maintain focus MRU list * src/display.h (struct _MetaDisplay): Keep an MRU list of windows. 2002-03-10 Havoc Pennington * src/display.c (event_callback): support _NET_NUMBER_OF_DESKTOPS message so you can change number of desktops with the pager * src/prefs.c (meta_prefs_set_num_workspaces): new function * src/display.c (meta_spew_event): print stacking aspects of configure requests 2002-03-10 Havoc Pennington * src/screen.c (set_supported_hint): we didn't claim to support _NET_ACTIVE_WINDOW so gtk_window_present() didn't work. Mumble. Only worked with tasklist because libwnck didn't check for WM support. * src/window.c (meta_window_free): clean off window state when windows are withdrawn, to avoid sticking dialogs to their initial desktop. (meta_window_queue_calc_showing): return if window is withdrawn 2002-03-08 Laszlo Peter * configure.in: fix the X linker flags 2002-03-06 Havoc Pennington * src/core.c (meta_core_get_grab_frame): add some assertions * src/menu.c (meta_window_menu_new): make another warning into a verbose * src/display.c (meta_change_button_grab): use verbose rather than warning to log failures to grab button, since these are typically BadWindow from a destroyed window. 2002-03-06 Havoc Pennington * src/frames.c (meta_frames_manage_window): use hash_table_replace instead of g_hash_table_insert * src/main.c (main): only enable verbose/debug if you set METACITY_VERBOSE/METACITY_DEBUG * src/util.c (ensure_logfile): only use a log file if METACITY_USE_LOGFILE is set * src/display.c (meta_display_for_x_display): add warning if MetaDisplay isn't found * src/window.c (meta_window_free): add an assertion that we successfully cleared the grab window 2002-03-05 Havoc Pennington Work on opaque animations more, still suck too much to turn on. Not sure how to make them good. * src/effects.c (meta_effects_draw_box_animation): add a slide-up mode for shading * src/ui.c (meta_image_window_set): change image window to work by setting back pixmap on the GtkWindow, instead of using GtkImage. 2002-03-04 Havoc Pennington * src/main.c (main): try ignoring SIGXFSZ, though I'm not sure what that does exactly. I'm hoping it gives me EFBIG. * src/util.c (ensure_logfile): log to a file in /tmp instead of to ~/metacity.log. 2002-03-04 Havoc Pennington * configure.in: fix configure.in since GTK no longer gives us -L/usr/X11R6/lib 2002-03-03 Havoc Pennington * src/window.c: improve debug spew about initial workspace 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.