1. 20 May, 2019 1 commit
    • Alexander Gramiak's avatar
      Introduce Emacs_Color struct and typedef · c0e146e4
      Alexander Gramiak authored
      This avoids clashing with the XColor struct from X.
      
      * src/dispextern [HAVE_X_WINDOWS]: Define Emacs_Color alias.
      [!HAVE_X_WINDOWS]: Rename XColor compatibility struct to
      Emacs_Color. Remove unused fields.
      
      * src/gtkutil.c:
      * src/gtkutil.h:
      * src/image.c:
      * src/nsterm.h:
      * src/nsterm.m:
      * src/termhooks.h:
      * src/w32fns.c:
      * src/w32term.c:
      * src/w32term.h:
      * src/xfaces.c:
      * src/xfns.c:
      * src/xterm.h: Use Emacs_Color over XColor outside of X-specific
      sections.
      c0e146e4
  2. 01 Jan, 2019 1 commit
  3. 27 Nov, 2018 1 commit
    • Robert Pluim's avatar
      Don't call xwidget functions until GTK has been initialized · a291f624
      Robert Pluim authored
      Follow up fix to Bug#33294.
      
      * src/gtkutil.c: Define xg_gtk_initialized.
      (xg_initialize): Set it when GTK has finished initializing.
      
      * src/gtkutil.h: Declare xg_gtk_initialized.
      
      * src/xwidget.c (Fmake_xwidget): Error out if GTK has not been
      initialized.
      (xwidget_init_view): Likewise.
      a291f624
  4. 01 Jan, 2018 1 commit
  5. 13 Sep, 2017 1 commit
    • Paul Eggert's avatar
      Prefer HTTPS to FTP and HTTP in documentation · bc511a64
      Paul Eggert authored
      Most of this change is to boilerplate commentary such as license URLs.
      This change was prompted by ftp://ftp.gnu.org's going-away party,
      planned for November.  Change these FTP URLs to https://ftp.gnu.org
      instead.  Make similar changes for URLs to other organizations moving
      away from FTP.  Also, change HTTP to HTTPS for URLs to gnu.org and
      fsf.org when this works, as this will further help defend against
      man-in-the-middle attacks (for this part I omitted the MS-DOS and
      MS-Windows sources and the test tarballs to keep the workload down).
      HTTPS is not fully working to lists.gnu.org so I left those URLs alone
      for now.
      bc511a64
  6. 17 Jul, 2017 2 commits
    • Lars Ingebrigtsen's avatar
      Remove usage of the GDK_SCALE variable · 36cf0791
      Lars Ingebrigtsen authored
      * src/gtkutil.c (xg_get_gdk_scale): Remove.
      (xg_get_default_scrollbar_height)
      (xg_get_default_scrollbar_width): Pass in a frame to check for
      scaling.
      (xg_frame_set_char_size): Use the API for querying scale
      instead of looking at the GDK_SCALE variable.
      (xg_get_default_scrollbar_width): Ditto.
      (xg_get_default_scrollbar_height): Ditto.
      (xg_update_scrollbar_pos): Ditto.
      
      * src/xfns.c (x_set_scroll_bar_default_height): Pass in the
      frame to get the width.
      36cf0791
    • Lars Ingebrigtsen's avatar
      Get positions of menus and tooltips right on HiDPI · 4198b4d9
      Lars Ingebrigtsen authored
      * src/gtkutil.c (xg_get_scale): New function.
      (xg_show_tooltip): Use it.
      
      * src/xmenu.c (create_and_show_popup_menu): Put menus in the
      right place.
      4198b4d9
  7. 12 Apr, 2017 2 commits
    • Martin Rudalics's avatar
      New internal-border face and args for select-window and x-focus-frame · c25005ed
      Martin Rudalics authored
      Add `internal-border' face and handle it whenever clearing the
      internal border.  If NORECORD equals the symbol
      'mark-for-redisplay', `select-window' will not record the window
      but still mark it for redisplay.  The new argument NOACTIVATE
      for `x-focus-frame' tries to not activate FRAME when set.
      
      * lisp/faces.el (internal-border): New face.
      * lisp/mwheel.el (mwheel-scroll): Select window to scroll with
      `mark-for-redisplay'.
      * lisp/scroll-bar.el (scroll-bar-drag)
      (scroll-bar-horizontal-drag, scroll-bar-scroll-down)
      (scroll-bar-scroll-up, scroll-bar-toolkit-scroll)
      (scroll-bar-toolkit-horizontal-scroll): Select window to scroll
      with `mark-for-redisplay'.
      * lisp/window.el (handle-select-window): When
      `focus-follows-mouse' is not 'auto-raise' try to not activate
      FRAME.
      * src/dispextern.h (face_id): Add INTERNAL_BORDER_FACE_ID.
      * src/frame.c (Fx_focus_frame): New argument NOACTIVATE.
      * src/frame.h (x_focus_frame): Update extern declaration.
      * src/gtkutil.c (xg_clear_under_internal_border): Remove
      function.
      (xg_frame_resized, xg_frame_set_char_size): Call
      x_clear_under_internal_border.
      (xg_tool_bar_callback): Adapt x_focus_frame call.
      * src/gtkutil.h (xg_clear_under_internal_border): Remove
      declaration.
      * src/nsfns.m (x_focus_frame): Add argument NOACTIVATE.
      * src/w32fns.c (x_clear_under_internal_border): Fill border
      with internal-border background if specified.
      * src/w32term.h (x_clear_under_internal_border): Add extern
      declaration.
      * src/w32term.c (x_after_update_window_line): Fill border
      with internal-border background if specified.
      (w32_set_vertical_scroll_bar, w32_set_horizontal_scroll_bar)
      (x_scroll_bar_clear, w32_read_socket): Call
      x_clear_under_internal_border.
      (x_focus_frame): New argument NOACTIVATE.
      * src/window.c (select_window): Mark WINDOW for redisplay when
      NORECORD equals 'mark-for-redisplay'.
      (Fselect_window): Update doc-string.
      (syms_of_window): Define Qmark_for_redisplay.
      * src/xdisp.c (clear_garbaged_frames, echo_area_display)
      (redisplay_internal): Call x_clear_under_internal_border.
      * src/xfaces.c (lookup_basic_face): Handle `window-divider'
      and `internal-border' faces.
      (realize_basic_faces): Realize `internal-border' face.
      (syms_of_xfaces): Define Qinternal_border.
      * src/xfns.c (x_set_internal_border_width): Remove call for
      xg_clear_under_internal_border.
      (x_focus_frame): New argument NOACTIVATE.  When non-nil try to not
      activate frame.
      * src/xterm.c (x_fill_rectangle): No more static.
      (x_clear_under_internal_border, x_after_update_window_line):
      Fill border with internal-border background if specified.
      (xt_horizontal_action_hook): Rewrite.
      (handle_one_xevent): Call x_clear_under_internal_border.
      * src/xterm.h (x_fill_rectangle): Add extern declaration.
      c25005ed
    • Martin Rudalics's avatar
      Add new frame parameters and associated functions · 3fdd3bb5
      Martin Rudalics authored
      Add new frame parameters `undecorated', `override-redirect',
      `parent-frame', `skip-taskbar', `no-focus-on-map',
      `no-accept-focus', `z-group', `delete-before', `no-other-frame',
      `mouse-wheel-frame', `min-width', `min-height'.  Add new
      functions `frame-restack' and `frame-list-z-order'.
      
      * lisp/cus-start.el (focus-follows-mouse): Adapt customization
      type.
      * lisp/frame.el (handle-delete-frame): Handle child and
      `delete-before' frames.
      (other-frame): Stop looking for other frame after one round.
      (frame-list-z-order, frame-restack): New functions.
      (delete-other-frames): Handle child frames.
      * lisp/frameset.el (frameset-persistent-filter-alist)
      (frameset--record-relationships): Handle `delete-before',
      `parent-frame' and `mouse-wheel-frame' parameters.  Rename
      latter from `frameset--record-minibuffer-relationships'.
      (frameset--restore-frame): Handle ‘parent-frame’ parameter
      specially.
      (frameset-restore): Handle `delete-before', `parent-frame' and
      `mouse-wheel-frame' parameters.
      * lisp/mwheel.el (mwheel-scroll): Handle `mouse-wheel-frame'
      parameter.
      * lisp/window.el (window--min-size-ignore-p): Fix doc-string.
      (mouse-autoselect-window-select, handle-select-window): Major
      rewrite.  Try to not ignore errors.  Handle auto-selection of
      child frames and different values of `focus-follows-mouse'.
      * src/frame.c (frame_windows_min_size): Handle new `min-width'
      and `min-height' frame parameters.
      (make_frame): Initialize new frame structure members.
      (do_switch_frame): Don't reset internal_last_event_frame for
      descendant frames.
      (Fframe_parent, frame_ancestor_p, Fframe_ancestor_p): New
      functions.
      (candidate_frame): Don't return `no-other-frame' frame.
      (other_frames): New function replacing other_visible_frames.
      (delete_frame): Rewrite.  Handle child and `delete-before' frames.
      (Fmake_frame_invisible): Call other_frames.
      (store_frame_param): Check `delete-before' and `parent-frame'
      parameters for circular dependencies.
      (frame_parms, syms_of_frame): Add entries for and define new
      frame parameters.
      (focus_follows_mouse): New meaningful value `auto-raise'.
      * src/frame.h (z_group): New enumeration type.
      (frame): New slots parent_frame, undecorated, override_redirect,
      skip_taskbar, no_focus_on_map, no_accept_focus, z_group.
      (fset_parent_frame): New inlined function.
      (FRAME_UNDECORATED, FRAME_OVERRIDE_REDIRECT)
      (FRAME_PARENT_FRAME, FRAME_SKIP_TASKBAR, FRAME_NO_FOCUS_ON_MAP)
      (FRAME_NO_ACCEPT_FOCUS, FRAME_Z_GROUP, FRAME_Z_GROUP_NONE)
      (FRAME_Z_GROUP_ABOVE, FRAME_Z_GROUP_ABOVE_SUSPENDED)
      (FRAME_Z_GROUP_BELOW): New macros.
      (frame_ancestor_p): Add declaration.
      * src/gtkutil.c (xg_create_frame_widgets): Handle
      `undecorated' and `override-redirect' frame parameters.
      (x_wm_set_size_hint): None for child frames.
      (xg_set_undecorated, xg_frame_restack, xg_set_skip_taskbar)
      (xg_set_no_focus_on_map, xg_set_no_accept_focus)
      (xg_set_override_redirect): New functions.
      (xg_update_scrollbar_pos, xg_update_horizontal_scrollbar_pos):
      Don't let scrollbars obscure child frames.
      * src/gtkutil.h: (xg_set_undecorated, xg_frame_restack)
      (xg_set_skip_taskbar, xg_set_no_focus_on_map)
      (xg_set_no_accept_focus, xg_set_override_redirect): Add extern
      declarations.
      * src/nsfns.m (ns_frame_parm_handlers): Add entries for new
      frame parameters.
      (Fx_create_frame): Install `min-width' and `min-height' frame
      parameters.
      * src/nsterm.m (mouseMoved:): Handle focus_follows_mouse change.
      * src/w32fns.c (WS_EX_NOACTIVATE): Define if necessary.
      (x_real_positions): Handle child frames.
      (x_set_menu_bar_lines): Don't for child frames.
      (x_set_undecorated, x_set_parent_frame, x_set_skip_taskbar)
      (x_set_no_focus_on_map, x_set_no_accept_focus)
      (x_set_z_group): New functions.
      (w32_createvscrollbar, w32_createhscrollbar): Don't draw
      scroll bars over child frames.
      (w32_createwindow): Handle new frame parameters and child frames.
      (w32_wnd_proc): Let mouse clicks into a child frame activate
      the frame.  Try to handle the `no-accept-focus' parameter.  Do
      SetFocus when our window is brought to top or becomes the
      foreground window.
      (w32_window): Don't initialize menu bar for child frames.
      (Fx_create_frame): Handle new frame parameters.
      (x_create_tip_frame): Set explicit_parent slot.
      (w32_dialog_in_progress): New function.
      (Fx_file_dialog): Handle `z-group-above' frames.
      (w32_frame_list_z_order, Fw32_frame_list_z_order)
      (w32_frame_restack, Fw32_frame_restack): New functions.
      (w32_frame_parm_handlers): Add entries for new frame
      parameters.
      * src/w32font.c (Fx_select_font): Handle `z-group-above'
      frames during font selection dialogue.
      * src/w32term.c (construct_mouse_wheel): Construct mouse wheel
      event from F's w32 window.
      (w32_mouse_position): Handle child frames.
      (w32_set_vertical_scroll_bar, w32_set_horizontal_scroll_bar):
      Don't draw scroll bars over child frames.
      (w32_read_socket): Always erase background of child frames.
      When generating SELECT_WINDOW_EVENTs handle new value of
      `focus-follows-mouse' and handle `no-accept-focus' parameter.
      Handle `mouse-wheel-frame' parameter.
      (x_calc_absolute_position, x_set_offset, x_set_window_size):
      Handle child frames.
      (x_make_frame_visible): Handle child frames specially.  Handle
      `no-focus-on-map' parameter.
      * src/w32term.h (w32_dialog_in_progress): Add external
      declaration.
      * src/xdisp.c (x_consider_frame_title, prepare_menu_bars): Not
      for child frames.
      * src/xfns.c (Xm/MwmUtil.h): Include for WM hints.
      (PropMotifWmHints, PROP_MOTIF_WM_HINTS_ELEMENTS): Define for
      non-Motif, non-GTK case.
      (x_real_pos_and_offsets): Handle child frames.
      (x_set_undecorated, x_set_parent_frame)
      (x_set_no_focus_on_map, x_set_no_accept_focus)
      (x_set_override_redirect): New functions.
      (x_set_menu_bar_lines): Not for child frames.
      (x_window): Handle `undecorated' and `override_redirect' cases.
      (Fx_create_frame): Handle new frame parameters.
      (frame_geometry): Handle child frames and outer border.
      (x_frame_list_z_order, Fx_frame_list_z_order)
      (x_frame_restack, Fx_frame_restack): New functions.
      (Fx_file_dialog, Fx_select_font): Set x_menu_set_in_use.
      (x_frame_parm_handlers): Add entries for new frame parameters.
      * src/xmenu.c (x_menu_set_in_use): Handle `z-group-above'
      frames.
      * src/xterm.c (x_set_frame_alpha): Don't set alpha of parent
      for child frames.
      (XTmouse_position): Handle child frames.
      (x_scroll_bar_create, x_scroll_bar_expose): Don't let scroll
      bars obscure child frames.
      (handle_one_xevent): Handle child frame positions.  If necessary
      set `skip-taskbar' and reassign proper `z-group' when we are
      mapped.  When generating SELECT_WINDOW_EVENTs handle new value
      of `focus-follows-mouse'.  Handle `mouse-wheel-frame' parameter.
      Let mouse clicks into a child frame activate the frame.
      (x_calc_absolute_position, x_set_offset): Handle child frames
      specially.
      (x_set_skip_taskbar, x_set_z_group): New functions.
      (x_make_frame_visible): Handle child frames.
      (ATOM_REFS_INIT): Add entries for
      Xatom_net_wm_state_skip_taskbar, Xatom_net_wm_state_above,
      Xatom_net_wm_state_below.
      * src/xterm.h (top-level): Declare Xatom_net_wm_state_above,
      Xatom_net_wm_state_below and Xatom_net_wm_state_skip_taskbar.
      (x_set_skip_taskbar, x_set_z_group): Add extern declarations.
      3fdd3bb5
  8. 01 Jan, 2017 1 commit
  9. 12 Jul, 2016 2 commits
    • John Wiegley's avatar
      Revert "Cleanup tooltips" · 54b7eb0d
      John Wiegley authored
      This reverts commit 20038f8a.
      
      I am reverting this change because it was applied without prior discussion
      on emacs-devel, and has been found to break the NS port.  It needs more
      testing and review before it should be applied here.
      54b7eb0d
    • Dmitry Antipov's avatar
      Cleanup tooltips · 20038f8a
      Dmitry Antipov authored
      * src/dispextern.h (toplevel): Remove 'tip_frame' and 'tip_window' decls.
      * src/frame.h (struct frame): New bitfield to indicate tooltip frame.
      (FRAME_TOOLTIP_P): New macro.
      * src/frame.c (make_frame): Mark new frame as regular frame by default.
      (Fframe_list, delete_frame): Redesign to use FRAME_TOOLTIP_P.
      (syms_of_frame): Don't DEFSYM 'Qtooltip' but use 'Qtooltip_timer'
      and 'Qtooltip_parameters' instead.
      * src/gtkutil.h (toplevel): Add 'xg_hide_tip' decl.
      * src/gtkutil.c (xg_hide_tip): New function.
      (xg_hide_tooltip): Adjust to cancel GTK event loop timeout if needed.
      * src/menu.c (Fx_popup_menu): Adjust call to Fx_hide_tip.
      * src/nsfns.c (toplevel): Remove 'tip_frame' leftover.
      * src/w32fns.c (unwind_create_tip_frame): Remove.
      (w32_display_monitor_attributes_list)
      (w32_display_monitor_attributes_list_fallback): Use FRAME_TOOLTIP_P.
      (toplevel): Remove 'tip_frame', 'tip_window' and 'last_show_tip_args'.
      (x_create_tip_frame): Use do_unwind_create_frame.  Mark new frame
      as a tooltip frame and record it using appropriate display info.
      (x_hide_tooltip): Add frame arg.
      (Fx_show_tip): Adjust to avoid globals, store tooltip parameters among
      base frame parameters, store tooltip hide timer among tooltip frame
      parameters.
      (Fx_hide_tip): Add frame arg, hide tooltips on all displays by default.
      (syms_of_w32fns): Don't DEFSYM 'Qtip_frame', don't initialize
      and GC-protect 'tip_timer', 'tip_frame' and 'last_show_tip_args'.
      * src/w32term.c (w32_read_socket): Extract tooltip window id from
      per-display data.  Use FRAME_TOOLTIP_P where appropriate.
      (x_new_font): Use FRAME_TOOLTIP_P.
      (x_free_frame_resources): Reset pointer to tooltip frame.
      * src/w32term.h (struct w32_display_info): New member 'w32_tooltip_frame'.
      * src/xdisp.c (init_iterator, x_consider_frame_title, prepare_menu_bars):
      Use FRAME_TOOLTIP_P.
      * src/xfns.c (x_make_monitor_attribute_list)
      (Fx_display_monitor_attributes_list): Likewise.
      (unwind_create_tip_frame): Remove.
      (toplevel): Remove 'tip_frame', 'tip_window' and 'last_show_tip_args'.
      (x_create_tip_frame): Use do_unwind_create_frame.  Mark new frame
      as a tooltip frame and record it using appropriate display info.
      (x_hide_tooltip): Add frame arg.
      (Fx_show_tip): Adjust to avoid globals, store tooltip parameters among
      base frame parameters, store tooltip hide timer among tooltip frame
      parameters.  To hide GTK system tooltip, use timeout hooked into GTK
      event loop.
      (Fx_hide_tip): Add frame arg, hide tooltips on all displays by default.
      (syms_of_xfns): Don't DEFSYM 'Qtip_frame', don't initialize
      and GC-protect 'tip_timer', 'tip_frame' and 'last_show_tip_args'.
      * src/xterm.c (handle_one_xevent): Extract tooltip window id from
      per-display data.  Use FRAME_TOOLTIP_P where appropriate.
      (x_new_font, x_set_window_size): Use FRAME_TOOLTIP_P.
      (x_free_frame_resources): Reset pointer to tooltip frame.
      * src/xterm.h (struct x_display_info): New member 'x_tooltip_frame'.
      (struct x_output) [USE_GTK_TOOLTIP]: New member 'ttip_timeout'.
      20038f8a
  10. 10 Mar, 2016 1 commit
    • Paul Eggert's avatar
      Rework C source files to avoid ^( · 7352c6c6
      Paul Eggert authored
      Work around Bug#22884 by rewording comments and strings to avoid ‘(’
      at the start of a line unless it starts a function.  This change
      is a short-term hack; in the longer run we plan to fix cc-mode’s
      performance for C files that have ‘(’ at the start of a line in a
      comment or string.
      7352c6c6
  11. 01 Jan, 2016 1 commit
  12. 21 Oct, 2015 1 commit
    • Paul Eggert's avatar
      Include-file cleanup for src directory · 63cfb75f
      Paul Eggert authored
      Omit ‘#include "foo.h"’ unless the file needs foo.h (Bug#21707).
      In a few cases, add ‘#include "foo.h"’ if the file needs foo.h
      but does not include it directly.  As a general rule, a source
      file should include foo.h if it needs the interfaces that foo.h
      defines.
      * src/alloc.c: Don’t include process.h.  Include dispextern.h,
      systime.h.
      * src/atimer.c: Don’t include blockinput.h.
      * src/buffer.c: Include coding.h, systime.h.  Don’t include
      keyboard.h, coding.h.
      * src/callint.c: Don’t include commands.h, keymap.h.
      * src/callproc.c: Don’t include character.h, ccl.h, composite.h,
      systty.h, termhooks.h.
      * src/casetab.c: Don’t include character.h.
      * src/category.c: Don’t include charset.h, keymap.h.
      * src/ccl.h: Don’t include character.h.
      * src/character.c: Don’t include charset.h.
      * src/charset.c: Don’t include disptab.h.
      * src/chartab.c: Don’t include ccl.h.
      * src/cm.c: Don’t include frame.h, termhooks.h.
      * src/cmds.c: Don’t include window.h, dispextern.h.
      * src/coding.c: Don’t include window.h, frame.h.
      * src/composite.c: Include composite.h.  Don’t include window.h,
      font.h.
      * src/data.c: Don’t include syssignal.h, termhooks.h, font.h.
      * src/dbusbind.c: Don’t include frame.h.
      * src/decompress.c: Don’t include character.h.
      * src/dired.c: Don’t include character.h, commands.h, charset.h.
      * src/dispnew.c: Don’t include character.h, indent.h, intervals.h,
      process.h, timespec.h.  Include systime.h.
      * src/doc.c: Include coding.h.  Don’t include keyboard.h.
      * src/editfns.c: Include composite.h.  Don’t include frame.h.
      * src/emacs.c: Include fcntl.h, coding.h.  Don’t include
      commands.h, systty.h..
      * src/fileio.c: Don’t include intervals.h, dispextern.h.
      Include composite.h.
      * src/filelock.c: Don’t include character.h, systime.h.
      * src/fns.c: Don’t include time.h, commands.h, keyboard.h,
      keymap.h, frame.h, blockinput.h, xterm.h.  Include composite.h.
      * src/font.c: Include termhooks.h.
      * src/font.h: Don’t include ccl.h, frame.h.  Add forward decls of
      struct composition_it, struct face, struct glyph_string.
      * src/fontset.c: Don’t include buffer.h, ccl.h, keyboard.h,
      intervals.h, window.h, termhooks.h.
      * src/frame.c: Don’t include character.h, commands.h, font.h.
      * src/frame.h: Don’t include dispextern.h.
      * src/fringe.c: Don’t include character.h.
      * src/ftcrfont.c: Don’t include dispextern.h, frame.h,
      character.h, charset.h, fontset.h.
      * src/ftfont.c: Don’t include frame.h, blockinput.h, coding.h,
      fontset.h.
      * src/ftxfont.c: Don’t include dispextern.h, character.h,
      charset.h, fontset.h.
      * src/gfilenotify.c: Don’t include frame.h, process.h.
      * src/gtkutil.c: Include dispextern.h, frame.h, systime.h.
      Don’t include syssignal.h, buffer.h, charset.h, font.h.
      * src/gtkutil.h: Don’t include frame.h.
      * src/image.c: Include fcntl.h and stdio.h instead of sysstdio.h.
      Don’t include character.h.
      * src/indent.c: Don’t include keyboard.h, termchar.h.
      * src/inotify.c: Don’t include character.h, frame.h.
      * src/insdel.c: Include composite.h.  Don’t include blockinput.h.
      * src/intervals.c: Don’t include character.h, keyboard.h.
      * src/intervals.h: Don’t include dispextern.h, composite.h.
      * src/keyboard.c: Don’t include sysstdio.h, disptab.h, puresize.h.
      Include coding.h.
      * src/keyboard.h: Don’t incldue systime.h.
      * src/keymap.c: Don’t include charset.h, frame.h.
      * src/lread.c: Include dispextern.h and systime.h.
      Don’t include frame.h.  Include systime.h.
      * src/macros.c: Don’t include commands.h, character.h, buffer.h.
      * src/menu.c: Include character.h, coding.h.  Don’t include
      dispextern.h.
      * src/menu.h: Don’t include systime.h.
      * src/minibuf.c: Don’t include commands.h, dispextern.h, syntax.h,
      intervals.h, termhooks.h.
      * src/print.c: Include coding.h.  Don’t include keyboard.h,
      window.h, dispextern.h, termchar.h, termhooks.h, font.h.
      Add forward decl of struct terminal.
      * src/process.c: Don’t include termhooks.h, commands.h,
      dispextern.h, composite.h.
      * src/region-cache.c: Don’t include character.h.
      * src/scroll.c: Don’t include keyboard.h, window.h.
      * src/search.c: Don’t include category.h, commands.h.
      * src/sound.c: Don’t include dispextern.h.
      * src/syntax.c: Don’t include command.h, keymap.h.
      * src/sysdep.c: Don’t include window.h, dispextern.h.
      * src/systime.h: Use ‘#ifdef emacs’, not ‘#ifdef EMACS_LISP_H’,
      * src/term.c: Don’t include systty.h, intervals.h, xterm.h.
      * src/terminal.c: Include character.h.
      Don’t include charset.h, coding.h.
      * src/textprop.c: Don’t include character.h.
      * src/undo.c: Don’t include character.h, commands.h, window.h.
      * src/unexsol.c: Don’t include character.h, charset.h.
      * src/widget.c: Include widget.h.  Don’t include keyboard.h,
      window.h, dispextern.h, blockinput.h, character.h, font.h.
      * src/widgetprv.h: Don’t include widget.h.
      * src/window.c: Don’t include character.h, menu.h, intervals.h.
      * src/xdisp.c: Include composite.h, systime.h.  Don’t include
      macros.h, process.h.
      * src/xfaces.c: Don’t include charset.h, keyboard.h, termhooks.h,
      intervals.h.
      * src/xfns.c: Don’t include menu.h, character.h, intervals.h,
      epaths.h, fontset.h, systime.h, atimer.h, termchar.h.
      * src/xfont.c: Don’t include dispextern.h, fontset.h, ccl.h.
      * src/xftfont.c: Don’t include dispextern.h, character.h, fontset.h.
      * src/xgselect.c: Don’t include timespec.h, frame.h.
      Include systime.h.
      * src/xgselect.h: Don’t include time.h.
      Use a forward decl to struct timespec instead.
      * src/xmenu.c: Don’t include keymap.h, character.h, charset.h,
      dispextern.h.  Include systime.h.
      * src/xml.c: Don’t include character.h.
      * src/xrdb.c [USE_MOTIF]: Don’t include keyboard.h.
      * src/xselect.c: Don’t include dispextern.h, character.h,
      buffer.h, process.h.
      * src/xsmfns.c: Don’t include systime.h, sysselect.h.
      * src/xterm.c: Don’t include syssignal.h, charset.h, disptab.h,
      intervals.h process.h, keymap.h, xgselect.h.  Include composite.h.
      63cfb75f
  13. 11 Feb, 2015 1 commit
    • Jan D's avatar
      Add cairo drawing. · dddcc0e7
      Jan D authored
      * configure.ac (with-cairo): New option.
      (USE_CAIRO): Default to yes for Gtk+ 3.  Add code to test for cairo,
      set CAIRO_CFLAGS, CAIRO_LIBS.  Add ftcrfonto to FONT_OBJ if cairo.
      Output "Does Emacs use cairo?".
      
      * lisp/version.el (emacs-version): Add cairo version.
      
      * src/Makefile.in (CAIRO_CFLAGS, CAIRO_LIBS): New variables.
      (FONT_OBJ): Add comment about ftcrfont.
      (ALL_CFLAGS): Add CAIRO_CFLAGS.
      (LIBES): Add CAIRO_LIBS.
      
      * src/dispextern.h (struct image): Add cr_data for cairo.
      (x_cr_init_fringe): Declare.
      
      * src/font.c (syms_of_font): Call syms_of_ftcrfont for cairo.
      
      * src/font.h (ftcrfont_driver, syms_of_ftcrfont): Declare
      
      * src/fringe.c (x_cr_init_fringe): New function name that shares code
      with w32_init_fringe.
      
      * src/ftcrfont.c: New font driver for cairo, based on the ftfont driver.
      
      * src/ftfont.c (ftfont_info_size); New global variable.
      (ftfont_open2): New extern function almost the same as old ftfont_open,
      but takes the font_object as argument.
      (ftfont_open): Build font object and call ftfont_open2.
      
      * src/ftfont.h (ftfont_open2, ftfont_info_size): Declare.
      
      * src/gtkutil.c (xg_clear_under_internal_border)
      (xg_update_scrollbar_pos, xg_update_horizontal_scrollbar_pos): Only
      queue_draw if not cairo.  Change args to x_clear_area.
      (xg_get_font): Use Qftcr when using cairo, Qxft otherwise.
      (xg_page_setup_dialog, xg_get_page_setup, draw_page)
      (xg_print_frames_dialog): New functions for printing.
      
      * src/gtkutil.h (xg_page_setup_dialog, xg_get_page_setup)
      (xg_print_frames_dialog): Declare.
      
      * src/image.c: Add defined (USE_CAIRO) for PNG.
      Add !defined USE_CAIRO for W32 PNG code.
      (x_clear_image): If cairo, destroy the surface in cr_data.
      (png_load): Add new cairo compatible implementation.
      (lookup_image_type): Add defined (USE_CAIRO) for define png_type.
      
      * src/xfns.c: New section Printing.
      (x-export-frames, x-page-setup-dialog, x-get-page-setup)
      (x-print-frames-dialog): New printing functions.
      (Fx_create_frame, x_create_tip_frame): Register ftcrfont if
      cairo.
      (syms_of_xfns): Defsym Qorientation, Qtop_margin, Qbottom_margin,
      Qportrait, Qlandscape, Qreverse_portrait, Qreverse_landscape).
      (syms_of_xfns): Provide cairo and defvar cairo-version-string.
      defsubr Sx_page_setup_dialog, Sx_get_page_setup, Sx_print_frames_dialog.
      
      * src/xterm.c (x_clear_area1, x_prepare_for_xlibdraw)
      (x_set_clip_rectangles, x_reset_clip_rectangles, x_fill_rectangle)
      (x_draw_rectangle, x_fill_trapezoid_for_relief, x_clear_window)
      (x_gc_get_ext_data, x_extension_initialize, x_cr_accumulate_data):
      Declare.
      (FRAME_CR_CONTEXT, FRAME_CR_SURFACE): New macros.
      (max_fringe_bmp, fringe_bmp): New variables.
      (x_gc_get_ext_data, x_extension_initialize)
      (x_cr_destroy_surface, x_begin_cr_clip, x_end_cr_clip)
      (x_set_cr_source_with_gc_foreground)
      (x_set_cr_source_with_gc_background, x_cr_define_fringe_bitmap)
      (x_cr_destroy_fringe_bitmap, x_cr_draw_image, x_cr_draw_frame)
      (x_cr_accumulate_data, x_cr_destroy, x_cr_export_frames)
      (x_prepare_for_xlibdraw, x_set_clip_rectangles)
      (x_reset_clip_rectangles, x_fill_rectangle, x_draw_rectangle)
      (x_clear_window, x_fill_trapezoid_for_relief): New functions.
      (x_update_begin): Create cairo surface if needed.
      (x_draw_vertical_window_border): Call x_fill_rectangle for cairo.
      (x_update_end): Paint cairo drawing surface to xlib surface.
      (x_clear_under_internal_border, x_after_update_window_line): Adjust
      arguments to x_clear_area.
      (x_draw_fringe_bitmap): Call x_fill_rectangle.  Get GC values and
      call x_cr_draw_image for cairo.  Call x_reset_clip_rectangles instead
      of XSetClipMask.
      (x_set_glyph_string_clipping)
      (x_set_glyph_string_clipping_exactly): Use x_set_clip_rectangles
      instead of XSetClipRectangles.
      (x_clear_glyph_string_rect, x_draw_glyph_string_background): Use
      x_fill_rectangle instead of XFillRectangle.
      (x_draw_glyph_string_foreground)
      (x_draw_composite_glyph_string_foreground)
      (x_draw_glyphless_glyph_string_foreground): Use x_draw_rectangle instead
      of XDrawRectangle.
      (x_draw_relief_rect): Add code for USE_CAIRO.
      Call x_reset_clip_rectangles instead of XSetClipMask.
      (x_draw_box_rect): x_set_clip_rectangles instead of XSetClipRectangles,
      x_fill_rectangle instead of XFillRectangle, x_reset_clip_rectangles
      instead of XSetClipMask.
      (x_draw_image_foreground, x_draw_image_foreground_1):
      x_draw_rectangle instead of XDrawRectangle.
      (x_draw_glyph_string_bg_rect): x_fill_rectangle instead of
      XFillRectangle.
      (x_draw_image_glyph_string): If img has cr_data, use it as
      a cairo surface.
      (x_draw_stretch_glyph_string): x_set_clip_rectangles instead of
      XSetClipRectangles, x_fill_rectangle instead of XFillRectangle.
      (x_draw_glyph_string): x_fill_rectangle instead of XFillRectangle.,
      x_reset_clip_rectangles instead of XSetClipMask.
      (x_shift_glyphs_for_insert): Call x_prepare_for_xlibdraw.
      (x_clear_area1): New function that calls XClearArea.
      (x_clear_area): Takes frame as parameter, calls x_clear_area1 for
      non-cairo.
      (x_clear_frame): x_clear_window instead of XClearWindow.
      (x_scroll_run): Set frame garbaged if cairo.
      (XTmouse_position): Initialize *part to 0.
      (x_scroll_bar_create): Adjust arguments to x_clear_area.
      (x_scroll_bar_set_handle): x_clear_area1 instead of x_clear_area,
      x_fill_rectangle instead of XFillRectangle.
      (XTset_vertical_scroll_bar, XTset_horizontal_scroll_bar): Adjust
      arguments to x_clear_area.
      (x_scroll_bar_expose): x_draw_rectangle instead of XDrawRectangle.
      (handle_one_xevent): Adjust arguments to x_clear_area.
      Destroy cairo surface for frame if ConfigureNotify.
      (x_clip_to_row): x_set_clip_rectangles instead of XSetClipRectangles.
      (x_draw_hollow_cursor): x_draw_rectangle instead of XDrawRectangle,
      x_reset_clip_rectangles instead of XSetClipMask.
      (x_draw_bar_cursor): x_fill_rectangle instead of XFillRectangle,
      x_reset_clip_rectangles instead of XSetClipMask.
      (x_clear_frame_area): Adjust arguments to x_clear_area.
      (x_free_frame_resources): Call x_prepare_for_xlibdraw.
      (x_term_init): Call x_extension_initialize if cairo.
      (x_redisplay_interface): Add x_cr_define_fringe_bitmap,
      x_cr_destroy_fringe_bitmap for cairo.
      (x_initialize): Call x_cr_init_fringe for cairo.
      
      * src/xterm.h: Add include of cairo header files.
      (x_bitmap_record): Add img if cairo.
      (x_gc_ext_data): New struct for cairo.
      (x_display_info): Add ext_codes for cairo.
      (x_output): Add cr_context and cr_surface for cairo.
      (x_clear_area): Change arguments from Display*/Window to frame pointer.
      (x_query_color, x_begin_cr_clip, x_end_cr_clip)
      (x_set_cr_source_with_gc_foreground, x_set_cr_source_with_gc_background)
      (x_cr_draw_frame, x_cr_export_frames): Declare.
      dddcc0e7
  14. 16 Jan, 2015 1 commit
    • Paul Eggert's avatar
      Give up on -Wsuggest-attribute=const · 0adc75af
      Paul Eggert authored
      The attribute doesn't help performance significantly, and the
      warning seems to be more trouble than it's worth.  See the thread at:
      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00361.html
      * configure.ac (WERROR_CFLAGS): Don't use -Wsuggest-attribute=const.
      * lib-src/make-docfile.c (write_globals):
      Remove special hack for Fnext_read_file_uses_dialog_p.
      * src/decompress.c (Fzlib_available_p):
      * src/gnutls.c (Fgnutls_available_p):
      * src/gtkutil.h (xg_uses_old_file_dialog):
      * src/xdisp.c (Ftool_bar_height):
      * src/xmenu.c (popup_activated):
      No longer const, since it's not const on at lest some
      configurations, and we shouldn't lie to the compiler.
      0adc75af
  15. 01 Jan, 2015 2 commits
  16. 18 Oct, 2014 1 commit
    • Jan Djärv's avatar
      Handle deprecated Gtk+ stuff for version <= 3.10 · 3f4c6d52
      Jan Djärv authored
      * lisp/term/x-win.el (x-gtk-stock-map): Add icon names suggested as
      replacements to stock names before stock names in a list.
      Cdr may be a list, each name is tried in turn until one is found.
      
      * src/gtkutil.c (XG_TEXT_CANCEL, XG_TEXT_OPEN, XG_TEXT_OK): New defines
      to handle Gtk versions.
      (xg_get_file_with_chooser): Use them.
      (xg_have_tear_offs, tearoff_remove, tearoff_activate): Remove
      (create_menus): Remove teroff argument and code.
      Remove call to gtk_menu_set_title.
      (xg_update_menubar, xg_update_submenu): Remove tearoff code.  Adjust
      args to create_menus.
      (xg_tool_bar_menu_proxy, xg_tool_bar_detach_callback)
      (xg_tool_bar_attach_callback, TOOLBAR_TOP_WIDGET): Remove.
      (xg_pack_tool_bar): Replace TOOLBAR_TOP_WIDGET, remove detach code.
      (xg_make_tool_item): Remove detach code.
      (xg_update_tool_bar_sizes): Replace TOOLBAR_TOP_WIDGET.
      (find_icon_from_name): New function.
      (update_frame_tool_bar): Remove GtkStockItem code, move to
      find_icon_from_name.  Let stock be a list of icon names to try.
      Only use gtk_image_new_from_stock on Gtk+ < 3.10.
      Replace TOOLBAR_TOP_WIDGET.
      (free_frame_tool_bar, xg_change_toolbar_position ): Replace
      TOOLBAR_TOP_WIDGET.
      (xg_initialize): Remove tearoff code.
      
      * src/gtkutil.h (xg_have_tear_offs): Remove declaration.
      
      * src/xmenu.c (set_frame_menubar): Remove GTK block that calls
      xg_have_tear_offs.
      
      * src/xterm.h (handlebox_widget): Remove.
      3f4c6d52
  17. 27 Jul, 2014 1 commit
    • Martin Rudalics's avatar
      Complete pixelwise frame/window resizing, add horizontal scrollbar support. · 3477e270
      Martin Rudalics authored
      * frame.el (frame-notice-user-settings): Rewrite using
      frame-initial-frame-tool-bar-height.
      * menu-bar.el (menu-bar-horizontal-scroll-bar)
      (menu-bar-no-horizontal-scroll-bar): New functions.
      (menu-bar-showhide-scroll-bar-menu): Add bindings for horizontal
      scroll bars.
      * scroll-bar.el (scroll-bar-lines)
      (set-horizontal-scroll-bar-mode)
      (get-horizontal-scroll-bar-mode, horizontal-scroll-bar-mode)
      (scroll-bar-horizontal-drag-1, scroll-bar-horizontal-drag)
      (scroll-bar-toolkit-horizontal-scroll): New functions.
      (horizontal-scroll-bar-mode)
      (previous-horizontal-scroll-bar-mode)
      (horizontal-scroll-bar-mode-explicit): New variables.
      (horizontal-scroll-bar-mode): New option.
      (toggle-horizontal-scroll-bar): Do something.
      (top-level): Bind horizontal-scroll-bar mouse-1.
      * startup.el (tool-bar-originally-present): Remove variable.
      (command-line): Don't set tool-bar-originally-present.
      * window.el (window-min-height): Update doc-string.
      (window--dump-frame): Dump horizontal scroll bar values.
      (window--min-size-1): Handle minibuffer window separately.
      Count in margins and horizontal scroll bar.  Return safe value
      iff IGNORE equals 'safe.
      (frame-windows-min-size): New function (used by frame resizing
      routines).
      (fit-frame-to-buffer, fit-window-to-buffer): Count in horizontal
      scroll bars.
      (window--sanitize-window-sizes): New function.
      (window-split-min-size): Remove.
      (split-window): Count divider-width.  Don't use
      `window-split-min-size' any more.  Reword error messages.
      Sanitize windows sizes after splitting.
      * buffer.h (struct buffer): New fields scroll_bar_height and
      horizontal_scroll_bar_type.
      * buffer.c (bset_scroll_bar_height)
      (bset_horizontal_scroll_bar_type): New functions.
      (Fbuffer_swap_text): Handle old_pointm field.
      (init_buffer_once): Set defaults for scroll_bar_height and
      horizontal_scroll_bar_type.
      (syms_of_buffer): New variables scroll_bar_height and
      horizontal_scroll_bar_type.
      * dispextern.h (window_part): Rename ON_SCROLL_BAR to
      ON_VERTICAL_SCROLL_BAR.  Add ON_HORIZONTAL_SCROLL_BAR.
      (set_vertical_scroll_bar): Remove prototype.
      (x_change_tool_bar_height): Add prototype.
      * dispnew.c (adjust_frame_glyphs_for_frame_redisplay)
      (window_to_frame_vpos, update_frame_1, scrolling, init_display):
      Use FRAME_TOTAL_COLS and FRAME_TOTAL_LINES instead of FRAME_COLS
      and FRAME_LINES.
      (adjust_frame_glyphs_for_window_redisplay): Rearrange lines.
      (update_window): Start mode_line_row->y after horizontal scroll
      bar.
      (change_frame_size_1): Call adjust_frame_size.
      (init_display): When changing the size of a tty frame do not
      pass height of menu bar.
      (Qframe_windows_min_size): New symbol.
      * frame.h (struct frame): List tool bar fields after menu bar
      fields.  Add official, total_lines, horizontal_scroll_bars,
      config_scroll_bar_height and config_scroll_bar_lines fields.
      (FRAME_HAS_HORIZONTAL_SCROLL_BARS)
      (FRAME_CONFIG_SCROLL_BAR_HEIGHT, FRAME_CONFIG_SCROLL_BAR_LINES)
      (FRAME_SCROLL_BAR_AREA_HEIGHT, FRAME_SCROLL_BAR_COLS)
      (FRAME_SCROLL_BAR_LINES, FRAME_TOTAL_LINES, SET_FRAME_LINES)
      (FRAME_WINDOWS_HEIGHT): New macros.
      (SET_FRAME_HEIGHT, FRAME_TEXT_LINES_TO_PIXEL_HEIGHT)
      (FRAME_PIXEL_Y_TO_LINE, FRAME_PIXEL_HEIGHT_TO_TEXT_LINES)
      (FRAME_TEXT_TO_PIXEL_HEIGHT): Separately count top margin and
      horizontal scroll bar.
      (frame_inhibit_resize, adjust_frame_size)
      (frame_windows_min_size): Add declarations.
      (Qscroll_bar_height, Qhorizontal_scroll_bars)
      (x_set_scroll_bar_default_height, x_set_left_fringe)
      (x_set_right_fringe, x_set_vertical_scroll_bars)
      (x_set_horizontal_scroll_bars, x_set_scroll_bar_width)
      (x_set_scroll_bar_height): Add external declarations.
      * frame.c: (frame_inhibit_resize, frame_windows_min_size)
      (adjust_frame_size): New functions.
      (make_frame): Initial horizontal_scroll_bars field.  Use
      SET_FRAME_LINES.  Don't allow horizontal scroll bar in
      minibuffer window.
      (make_initial_frame, make_terminal_frame): No horizontal scroll
      bar in initial and terminal frames.  Use adjust_frame_size.
      (Fframe_total_cols): Fix doc-string.
      (Fframe_total_lines, Fscroll_bar_height): New Lisp functions.
      (Fset_frame_height, Fset_frame_width, Fset_frame_size): Rewrite
      using adjust_frame_size.
      (Qscroll_bar_height, Qhorizontal_scroll_bars)
      (Qframe_windows_min_size): New symbols.
      (x_set_frame_parameters): Remove call of check_frame_size.
      (x_report_frame_params): Return scroll_bar_height value.
      (x_set_left_fringe, x_set_right_fringe): New functions.
      (adjust_frame_height, x_set_internal_border_width)
      (x_set_fringe_width): Remove.
      (x_set_internal_border_width, x_set_vertical_scroll_bars)
      (x_set_scroll_bar_width, x_set_right_divider_width)
      (x_set_bottom_divider_width): Rewrite using adjust_frame_size.
      (x_set_horizontal_scroll_bars, x_set_scroll_bar_height): New
      functions.
      (x_figure_window_size): Rewrite to make frame display the
      expected number of lines.
      (Vdefault_frame_scroll_bars): Rewrite doc-string.
      (Vdefault_frame_horizontal_scroll_bars)
      (Vframe_initial_frame_tool_bar_height)
      (frame_inhibit_implied_resize): New variables.
      * fringe.c (compute_fringe_widths): Remove.
      * gtkutil.h (YG_SB_MIN, YG_SB_MAX, YG_SB_RANGE): Define.
      (xg_create_horizontal_scroll_bar)
      (xg_update_horizontal_scrollbar_pos)
      (xg_set_toolkit_horizontal_scroll_bar_thumb)
      (xg_get_default_scrollbar_height)
      (xg_clear_under_internal_border): Extern.
      * gtkutil.c (xg_frame_resized): Don't call
      do_pending_window_change.
      (xg_frame_set_char_size): Use adjust_frame_size.
      (style_changed_cb): Call update_theme_scrollbar_height and
      x_set_scroll_bar_default_height.
      (x_wm_set_size_hint): Don't call check_frame_size.
      (update_theme_scrollbar_height)
      (xg_get_default_scrollbar_height)
      (xg_create_horizontal_scroll_bar)
      (xg_update_horizontal_scrollbar_pos)
      (xg_set_toolkit_horizontal_scroll_bar_thumb): New functions.
      (xg_create_scroll_bar): Set horizontal slot of bar.
      (xg_initialize): Call update_theme_scrollbar_height.
      (xg_clear_under_internal_border): No more static.
      * insdel.c (adjust_suspend_auto_hscroll): New function.
      (adjust_markers_for_delete, adjust_markers_for_insert)
      (adjust_markers_for_replace): Call adjust_suspend_auto_hscroll.
      * keyboard.c (readable_events, discard_mouse_events)
      (make_lispy_event): Handle horizontal scroll bar click events.
      (Fsuspend_emacs): When changing the size of a tty frame do not
      pass height of menu bar.
      (Qbefore_handle, Qhorizontal_handle, Qafter_handle, Qleft)
      (Qright, Qleftmost, Qrightmost): New symbols.
      * menu.c (Fx_popup_dialog): Use FRAME_TOTAL_LINES instead of
      FRAME_LINES.
      * minibuf.c (read_minibuf): Initialize suspend_auto_hscroll.
      * nsfns.m (x_set_internal_border_width): New function.
      * nsterm.m (ns_draw_fringe_bitmap, ns_set_vertical_scroll_bar):
      Remove extended fringe code.
      (x_set_window_size, x_new_font): Don't call
      compute_fringe_widths.
      * term.c (Fresume_tty): When changing the size of a tty frame do
      not pass height of menu bar.
      (clear_tty_hooks, set_tty_hooks): Clear
      horizontal_scroll_bar_hook.
      (init_tty): Frame has no horizontal scroll bars.
      * termhooks.h (enum scroll_bar_part): Add scroll_bar_move_ratio,
      scroll_bar_before_handle, scroll_bar_horizontal_handle,
      scroll_bar_after_handle, scroll_bar_left_arrow,
      scroll_bar_right_arrow, scroll_bar_to_leftmost and
      scroll_bar_to_rightmost entries.
      (enum event_kind): Add HORIZONTAL_SCROLL_BAR_CLICK_EVENT
      (struct terminal): Add set_horizontal_scroll_bar_hook.
      * w32console.c (initialize_w32_display): Clear
      horizontal_scroll_bar_hook.
      * w32fns.c (x_set_mouse_color): Use FRAME_W32_DISPLAY instead of
      FRAME_X_DISPLAY.
      (x_clear_under_internal_border, x_set_internal_border_width):
      New functions.
      (x_set_menu_bar_lines): Rewrite using frame_inhibit_resize.  Set
      windows_or_buffers_changed when adding the menu bar.
      (x_set_tool_bar_lines): Rewrite using adjust_frame_size.
      (x_change_tool_bar_height, x_set_scroll_bar_default_height)
      (w32_createhscrollbar): New functions.
      (w32_createscrollbar): Rename to w32_createvscrollbar.
      (w32_createwindow): Init WND_HSCROLLBAR_INDEX.
      (w32_name_of_message): Replace WM_EMACS_CREATESCROLLBAR by
      WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR.  Add
      WM_EMACS_SHOWCURSOR.
      (w32_wnd_proc): Handle WM_HSCROLL case.  In WM_WINDOWPOSCHANGING
      case do not artificially impose WM size hints.  Handle
      WM_EMACS_SHOWCURSOR case.  Replace WM_EMACS_CREATESCROLLBAR case
      by WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR
      cases.
      (my_create_tip_window): Replace WND_SCROLLBAR_INDEX by
      WND_VSCROLLBAR_INDEX and WND_HSCROLLBAR_INDEX.
      (unwind_create_frame_1): Remove.
      (Fx_create_frame): Make both scrollbars the system standard
      width and height.  Use official field of frame structure to
      inhibit running window-configuration-change-hook.
      (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size
      pixelwise.  Handle frame's official field.
      (w32_frame_parm_handlers): Remove x_set_fringe_width
      entries. Add x_set_scroll_bar_height,
      x_set_horizontal_scroll_bars, x_set_left_fringe and
      x_set_right_fringe.
      * w32inevt.c (resize_event, maybe_generate_resize_event): Do not
      pass height of menu bar to change_frame_size.
      * w32menu.c (set_frame_menubar): Rewrite using
      frame_inhibit_resize.
      * w32term.h (struct w32_display_info): Add
      horizontal_scroll_bar_cursor and cursor_display_counter.
      (struct scroll_bar): Add horizontal.
      (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT)
      (HORIZONTAL_SCROLL_BAR_LEFT_RANGE)
      (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH)
      (HORIZONTAL_SCROLL_BAR_LEFT_BORDER)
      (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER)
      (HORIZONTAL_SCROLL_BAR_TOP_BORDER)
      (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER)
      (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): New macros.
      (WM_EMACS_CREATEVSCROLLBAR, WM_EMACS_CREATEHSCROLLBAR): Define
      instead of WM_EMACS_CREATESCROLLBAR.
      (WND_VSCROLLBAR_INDEX, WND_HSCROLLBAR_INDEX): Define instead of
      WND_SCROLLBAR_INDEX.
      * w32term.c (horizontal_scroll_bar_min_handle)
      (horizontal_scroll_bar_left_border)
      (horizontal_scroll_bar_right_border): New integers.
      (x_set_frame_alpha): Replace x_highlight_frame by
      w32_focus_frame.
      (x_window_to_scroll_bar): New argument "type".  Update callers
      accordingly.
      (w32_set_horizontal_scroll_bar_thumb)
      (x_horizontal_scroll_bar_report_motion)
      (w32_set_horizontal_scroll_bar)
      (w32_horizontal_scroll_bar_handle_click)
      (x_horizontal_scroll_bar_report_motion): New functions.
      (w32_mouse_position): Discriminate horizontal and vertical
      scrollbar cases.
      (my_create_scrollbar): Replace with two new functions
      my_create_vscrollbar and my_create_hscrollbar.
      (x_scroll_bar_create): New argument "horizontal".  Update
      callers accordingly.
      (x_scroll_bar_remove, w32_condemn_scroll_bars)
      (w32_redeem_scroll_bar, x_scroll_bar_clear): Handle horizontal
      scroll bar case.
      (w32_read_socket): Handle WM_HSCROLL cae.
      (x_new_font): Don't recompute fringe widths.  Use
      frame_inhibit_resize.  Calculate new menu bar height iff we
      build without toolkit.  Always clear under internal border.
      (x_set_window_size): Don't check frame size or recompute
      fringes.  Reset fullscreen status before applying sizes.  Always
      resize as requested by pixelwise argument.  Don't call
      do_pending_window_change.
      (x_wm_set_size_hint): Add call for FRAME_SCROLL_BAR_AREA_HEIGHT.
      (w32_initialize_display_info): Initialize dpyinfo's
      horizontal_scroll_bar_cursor entry.
      (w32_create_terminal): Add set_horizontal_scroll_bar_hook.
      (w32_initialize): Init horizontal_scroll_bar_min_handle and
      horizontal_scroll_bar_left_border.
      (w32fullscreen_hook): Intermittently resize window to normal
      when switching from fullscreen to maximized state.
      (run_window_configuration_change_hook): Don't run it if frame is
      not official yet.
      (unwind_change_frame): Remove.
      (Fset_window_configuration): Rewrite using frame's official field.
      * widget.c (set_frame_size): Don't call compute_fringe_widths.
      (EmacsFrameSetCharSize): Obey frame_inhibit_resize.
      * window.h (struct window): New fields old_pointm,
      horizontal_scroll_bar, horizontal_scroll_bar_type, hscroll_whole,
      scroll_bar_height and suspend_auto_hscroll.
      (wset_horizontal_scroll_bar, wset_horizontal_scroll_bar_type):
      New functions.
      (sanitize_window_sizes): Extern.
      (MINI_NON_ONLY_WINDOW_P, MINI_ONLY_WINDOW_P, WINDOW_PSEUDO_P)
      (WINDOW_TOPMOST_P, WINDOW_HAS_HORIZONTAL_SCROLL_BAR)
      (WINDOW_CONFIG_SCROLL_BAR_HEIGHT)
      (WINDOW_CONFIG_SCROLL_BAR_LINES)
      (WINDOW_SCROLL_BAR_LINES, WINDOW_SCROLL_BAR_AREA_HEIGHT): New
      macros.
      (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS)
      (WINDOW_FRINGE_COLS, WINDOW_FRINGE_EXTENDED_P): Remove macros.
      (WINDOW_VERTICAL_SCROLL_BAR_TYPE)
      (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT)
      (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT)
      (WINDOW_HAS_VERTICAL_SCROLL_BAR): Minor rewrite.
      (WINDOW_BOX_HEIGHT_NO_MODE_LINE, WINDOW_BOX_TEXT_HEIGHT)
      (WINDOW_SCROLL_BAR_AREA_Y): Count in scroll bar height.
      * window.c (wset_old_pointm, Fwindow_scroll_bar_height)
      (Fwindow_old_point, sanitize_window_sizes): New functions.
      (Qwindow_sanitize_window_sizes): New symbol.
      (window_body_height): Count in horizontal scroll bar.
      (set_window_hscroll, Fscroll_left, Fscroll_right): Set
      suspend_auto_hscroll slot.
      (Fwindow_inside_edges): Count fringes pixelwise.
      (coordinates_in_window, Fcoordinates_in_window_p): Consider
      horizontal scroll bar.
      (check_frame_size, adjust_window_margins): Remove functions and
      corresponding calls.
      (set_window_buffer): Initialize old_pointm and horizontal scroll
      bars.
      (temp_output_buffer_show): Reset hscroll related fields.
      Initialize old_pointm.
      (make_parent_window): Initialize old_pointm.
      (make_window): Initialize old_pointm, horizontal scroll bar type,
      and scroll bar height.
      (resize_frame_windows): Don't count top margin in new sizes.
      Don't use safe sizes when shrinking a frame; let the window
      manager do the clipping.
      (Fsplit_window_internal): Inherit horizontal scroll bar type and
      height.
      (Fdelete_window_internal): Unchain old_pointm marker.
      (window_scroll_pixel_based, Fscroll_other_window): Adjust
      old_pointm.
      (Fwindow_text_width, Fwindow_text_height): New argument
      "pixelwise".
      (struct saved_window): New fields, old_pointm, hscroll_whole,
      suspend_auto_hscroll, scroll_bar_height and
      horizontal_scroll_bar_type.
      (Fset_window_configuration, save_window_save): Set new fields of
      saved_window.
      (apply_window_adjustment): Don't call adjust_window_margins.
      (set_window_margins): Don't change margins if new sizes don't
      fit into window.
      (set_window_scroll_bars): New argument "horizontal_type".
      Handle horizontal scroll bars.  Don't change scroll bars if they
      don't fit into window.
      (Fset_window_scroll_bars): New argument "horizontal_type".
      (Fwindow_scroll_bars): Return values for horizontal scroll bars.
      (compare_window_configurations): Compare horizontal scroll bar
      settings.
      * xdisp.c (window_text_bottom_y, window_box_height): Count in
      horizontal scroll bar height.
      (pixel_to_glyph_coords, init_xdisp): Use FRAME_TOTAL_LINES
      instead of FRAME_LINES.
      (remember_mouse_glyph): Case ON_SCROLL_BAR changed to
      ON_VERTICAL_SCROLL_BAR.
      (with_echo_area_buffer): Initialize old_pointm.
      (with_echo_area_buffer_unwind_data): Store old_pointm values in
      vector.
      (unwind_with_echo_area_buffer): Handle old_pointm.
      (update_tool_bar): Set do_update when the tool bar window has at
      least one line (since this is what the user sets).
      (MAX_FRAME_TOOL_BAR_HEIGHT): Remove macro.
      (redisplay_tool_bar): Return early when toolbar has zero lines.
      Call x_change_tool_bar_height.  Don't use max_tool_bar_height.
      (hscroll_window_tree): Handle suspension of auto_hscroll and
      old_pointm.
      (set_horizontal_scroll_bar): New function.
      (redisplay_window): Set ignore_mouse_drag_p when tool bar has
      more than one line.  Handle horizontal scroll bars.
      (note_mouse_highlight): Handle horizontal scrol bars.
      (expose_frame): Set dimensions of XRectangle from frame's text
      sizes.
      (Vvoid_text_area_pointer): Update doc-string.
      * xfns.c (x_set_menu_bar_lines): Use adjust_frame_size.
      (x_change_tool_bar_height, x_set_scroll_bar_default_height)
      (x_set_internal_border_width): New functions.
      (x_set_tool_bar_lines): Call x_change_tool_bar_height.
      (unwind_create_frame_1): Remove.
      (Fx_create_frame): Handle horizontal scroll bars.  Use official
      field of frame structure to inhibit running
      window-configuration-change-hook.
      (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size
      pixelwise.  Handle frame's official field.
      (x_frame_parm_handlers): Add x_set_scroll_bar_height,
      x_set_horizontal_scroll_bars, x_set_left_fringe,
      x_set_right_fringe.
      * xmenu.c (update_frame_menubar, free_frame_menubar): Use
      adjust_frame_size.
      * xterm.h (struct x_display_info): Add
      horizontal_scroll_bar_cursor and Xatom_Horizontal_Scrollbar
      slots.
      (struct scroll_bar): Add horizontal slot.
      (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT)
      (HORIZONTAL_SCROLL_BAR_LEFT_RANGE)
      (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH): New macros.
      (HORIZONTAL_SCROLL_BAR_LEFT_BORDER)
      (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER)
      (HORIZONTAL_SCROLL_BAR_TOP_BORDER)
      (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER)
      (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): Define.
      (x_clear_under_internal_border): Remove.
      * xterm.c (XTmouse_position): Handle horizontal scroll bars.
      (x_window_to_scroll_bar): New argument TYPE.  Update callers.
      (x_send_scroll_bar_event, x_scroll_bar_create): New arguments
      HORIZONTAL.  Update callers.
      (horizontal_action_hook_id): New action hook id.
      (x_horizontal_scroll_bar_to_input_event)
      (x_create_horizontal_toolkit_scroll_bar)
      (xt_horizontal_action_hook)
      (x_set_toolkit_horizontal_scroll_bar_thumb)
      (XTset_horizontal_scroll_bar, x_net_wm_state)
      (x_horizontal_scroll_bar_report_motion): New functions.
      (xg_scroll_callback, x_scroll_bar_handle_click): Handle
      horizontal scroll bars.
      (SCROLL_BAR_HORIZONTAL_NAME): Define.
      (XTset_vertical_scroll_bar): Attempt to clear areas not covered
      by scroll bar.
      (XTcondemn_scroll_bars, XTredeem_scroll_bar): Rewrite.  Handle
      horizontal scroll bars.
      (handle_one_xevent): Handle horizontal scroll bar events.  Call
      x_net_wm_state.
      (x_set_window_size_1, x_wm_set_size_hint): Don't call
      check_frame_size.
      (x_set_window_size): Don't call check_frame_size and
      do_pending_window_change.
      (x_term_init): Init horizontal_scroll_bar_cursor display info.
      (x_create_terminal): Add set_horizontal_scroll_bar_hook.
      (x_scroll_bar_set_handle): Add some checks when calling
      x_clear_area.
      3477e270
  18. 03 Jun, 2014 1 commit
    • Paul Eggert's avatar
      Do not require libXt-devel when building with gtk. · 181f08a7
      Paul Eggert authored
      * lwlib/lwlib-widget.h: New file, with contents taken from lwlib.h.
      (widget_value) [HAVE_NTGUI]: New member 'title'.
      * lwlib/lwlib.h: Include lwlib-widget.h.
      (change_type, enum button_type, widget_value):
      Move to lwlib-widget.h.
      * src/gtkutil.h, src/menu.h: Include lwlib-widget.h, not lwlib-h, to avoid
      dependency on libXt-devel.
      * src/menu.h [HAVE_NTGUI]: Include lwlib-widget.h in this case too.
      (enum button_type, widget_value) [HAVE_NTGUI]: Remove, as
      lwlib-widget.h now does this.
      * src/nsmenu.m (ns_menu_show): "enabled" -> "enable" to fix typo.
      181f08a7
  19. 02 Jun, 2014 1 commit
    • Dmitry Antipov's avatar
      Use common memory management functions for lwlib and refactor users. · 5668fb88
      Dmitry Antipov authored
      * lwlib/lwlib.h (widget_value): Do not maintain a free list any more.
      (malloc_widget_value, free_widget_value): Remove prototypes.
      * lwlib/lwlib.c (malloc_widget_value, free_widget_value):
      (widget_value_free_list, malloc_cpt): Remove.
      (free_widget_value_tree, copy_widget_value_tree): Adjust users.
      * src/menu.h (xmalloc_widget_value): Replaced by ...
      (make_widget_value): ... new prototype.
      * src/menu.c (xmalloc_widget_value): Replaced by ...
      (make_widget_value): ... new function.
      (free_menubar_widget_value_tree, digest_single_submenu): Adjust users.
      * src/gtkutil.c (malloc_widget_value, free_widget_value):
      (widget_value_free_list, malloc_cpt): Remove old lwlib-compatible code.
      * src/keyboard.h (enum button_type, struct _widget_value):
      * src/gtkutil.h, src/nsgui.h, src/w32gui.h (malloc_widget_value):
      (free_widget_value): Likewise.
      * src/nsmenu.m (ns_update_menubar, ns_menu_show):
      * src/w32menu.c (set_frame_menubar, w32_menu_show, w32_dialog_show):
      * src/xmenu.c (set_frame_menubar, xmenu_show, x_dialog_show): Adjust users.
      * src/xterm.h (XtParent) [USE_GTK]: Remove unused macro.
      5668fb88
  20. 22 May, 2014 1 commit
    • Paul Eggert's avatar
      Supply malloc and alloc_size attributes for extern allocators. · 74fde0f4
      Paul Eggert authored
      This documents the C API, and helps GCC generate a bit better code.
      * conf_post.h (ATTRIBUTE_MALLOC, ATTRIBUTE_ALLOC_SIZE)
      (ATTRIBUTE_MALLOC_SIZE): New macros.
      * gmalloc.c (malloc, realloc, calloc):
      * gtkutil.h (malloc_widget_value):
      * lisp.h (ralloc, r_re_alloc, xmalloc, xzalloc, xrealloc, xnmalloc)
      (xnrealloc, xstrdup, xlispstrdup, record_xmalloc):
      Use them.
      74fde0f4
  21. 13 Jan, 2014 1 commit
  22. 01 Jan, 2014 1 commit
  23. 03 Dec, 2013 1 commit
    • Martin Rudalics's avatar
      Fix issues related to pixelwise resizing. (Bug#16013) (Bug#16033) · 7303a0ae
      Martin Rudalics authored
      * window.c (Fset_window_new_pixel): Don't choke at negative
      argument value (Bug#16033).
      
      * xfns.c (Fx_create_frame): Add another call to change_frame_size
      to avoid crash in window_box_height.
      
      * gtkutil.h: Fix external declaration of xg_frame_set_char_size.
      * gtkutil.c (xg_frame_set_char_size, style_changed_cb): Fix size
      calculation.
      * xterm.c (x_set_window_size): Fix size calculation (Bug#16013).
      7303a0ae
  24. 17 Sep, 2013 1 commit
    • Paul Eggert's avatar
      Don't overuse 'const' in types of locals. · b7ad2f74
      Paul Eggert authored
      * bidi.c (bidi_count_bytes):
      * gtkutil.c, gtkutil.h (xg_event_is_for_menubar)
      (xg_event_is_for_scrollbar):
      * xselect.c (x_handle_property_notify)
      (x_handle_selection_notify, x_handle_dnd_message):
      * xsettings.c, xsettings.h (xft_settings_event):
      * xterm.c (x_handle_net_wm_state, handle_one_event)
      (x_menubar_window_to_frame, x_detect_focus_change)
      (construct_mouse_click, note_mouse_movement)
      (x_scroll_bar_to_input_event, x_scroll_bar_expose)
      (x_scroll_bar_handle_click, x_scroll_bar_note_movement)
      (handle_one_xevent, x_handle_net_wm_state):
      * xterm.h (x_handle_property_notify, x_handle_selection_notify)
      (x_handle_dnd_message):
      Avoid unnecessary 'const', typically the second 'const' in
      'const foo * const arg', a 'const' that does not affect the API
      and doesn't significantly help the human reader.
      b7ad2f74
  25. 16 Sep, 2013 1 commit
    • Dmitry Antipov's avatar
      Do not copy X event in handle_one_xevent except KeyPress case. · 61582e6a
      Dmitry Antipov authored
      Wnen XEvent is processed, it is unlikely to be changed except
      KeyPress case, so we can avoid copying and use const pointer to
      const data to make sure that an event is not changed elsewhere.
      * xterm.c (handle_one_xevent): Change 2nd arg to 'const XEvent *
      const' and do not create local copy except for the KeyPress event.
      Use casts to avoid a few glitches.  Adjust formatting.  Add comments.
      (SET_SAVED_BUTTON_EVENT): Remove and move the code to the only user.
      (x_handle_net_wm_state, x_menubar_window_to_frame)
      (x_detect_focus_change, construct_mouse_click, note_mouse_movement)
      (x_scroll_bar_to_input_event, x_scroll_bar_expose)
      (x_scroll_bar_handle_click, x_scroll_bar_note_movement):
      * gtkutil.c (xg_event_is_for_menubar, xg_event_is_for_scrollbar):
      * xselect.c (x_handle_property_notify, x_handle_selection_notify)
      (x_handle_dnd_message):
      * xsettings.c (xft_settings_event):
      Use 'const XEvent * const' where appropriate.
      * xterm.h, gtkutil.h, xsettngs.h: Adjust related prototypes.
      61582e6a
  26. 30 Aug, 2013 1 commit
    • Dmitry Antipov's avatar
      Minor cleanup to avoid forward declarations. · 9d7693d7
      Dmitry Antipov authored
      * coding.h (struct ccl_spec): Remove forward declaration.
      * composite.h (toplevel): Include font.h.
      (struct composition_it, struct face, struct font_metrics):
      Remove forward declaration.
      * dispextern.h (struct image, struct atimer): Likewise.
      * emacsgtkfixed.h (struct frame): Likewise.
      * emacsgtkfixed.c (toplevel): Reorder headers and drop stdio.h.
      * font.h (struct font_driver, struct font, struct glyph_string)
      (struct face): Remove forward declaration.
      * fontset.h (struct face, struct font): Likewise.
      * frame.h (toplevel): Style cleanup.
      (enum output_method): Move to...
      * termhooks.h (enum output_method): ...here.
      (struct glyph, struct frame, struct ns_display_info)
      (struct x_display_info, struct w32_display_info):
      Remove forward declaration.
      * xterm.h (toplevel): Include termhooks.h.
      (struct font, struct window, struct glyph_matrix, struct frame)
      (struct input_event, struct face, struct image): Remove forward
      declaration.
      * gtkutil.h (struct _widget_value): Likewise.
      * keyboard.h (toplevel): Include termhooks.h.
      (struct input_event): Remove forward declaration.
      9d7693d7
  27. 03 Aug, 2013 1 commit
    • Dmitry Antipov's avatar
      Drop FRAME_PTR typedef. · a10c8269
      Dmitry Antipov authored
      * composite.c, font.c, font.h, fontset.c, fontset.h, frame.c, frame.h:
      * ftfont.c, ftxfont.c, gtkutil.c, gtkutil.h, image.c, keyboard.c:
      * menu.c, menu.h, msdos.c, nsfns.m, nsfont.m, nsmenu.m, nsterm.h:
      * nsterm.m, scroll.c, term.c, w32fns.c, w32font.c, w32font.h:
      * w32inevt.c, w32inevt.h, w32menu.c, w32notify.c, w32term.c, w32term.h:
      * w32uniscribe.c, w32xfns.c, widget.c, window.c, xdisp.c, xfaces.c:
      * xfns.c, xfont.c, xftfont.c, xmenu.c, xselect.c, xterm.c:
      All related users changed.
      a10c8269
  28. 01 Jan, 2013 1 commit
  29. 23 Sep, 2012 1 commit
    • Paul Eggert's avatar
      gnutls.c, gtkutil.c: Use bool for boolean. · 18e27ea8
      Paul Eggert authored
      * gnutls.c (gnutls_global_initialized, init_gnutls_functions)
      (emacs_gnutls_handle_error):
      * gtkutil.c (xg_check_special_colors, xg_prepare_tooltip)
      (xg_hide_tooltip, xg_create_frame_widgets)
      (create_dialog, xg_uses_old_file_dialog)
      (xg_get_file_with_chooser, xg_get_file_with_selection)
      (xg_get_file_name, xg_have_tear_offs, create_menus, xg_create_widget)
      (xg_item_label_same_p, xg_update_menubar)
      (xg_modify_menubar_widgets, xg_event_is_for_menubar)
      (xg_ignore_gtk_scrollbar, xg_set_toolkit_scroll_bar_thumb)
      (xg_event_is_for_scrollbar, xg_pack_tool_bar, xg_make_tool_item)
      (is_box_type, xg_tool_item_stale_p, xg_update_tool_bar_sizes)
      (update_frame_tool_bar, free_frame_tool_bar):
      * gtkutil.c, w32term.c, xterm.c (x_wm_set_size_hint):
      * nsmenu.m (ns_update_menubar):
      * nsmenu.m, w32menu.c, xmenu.c (set_frame_menubar):
      * xfns.c (Fx_show_tip) [USE_GTK]:
      Use bool for boolean.
      * gtkutil.c (xg_update_frame_menubar):
      * xmenu.c (update_frame_menubar):
      Return void, not int, since caller ignores return value.
      * gtkutil.c (xg_change_toolbar_position):
      Return void, not 1.
      18e27ea8
  30. 02 Sep, 2012 1 commit
  31. 01 Sep, 2012 1 commit
    • Daniel Colascione's avatar
      Refactor window-system configuration · 17a2cbbd
      Daniel Colascione authored
      This change streamlines the window system selection code in
      configure.in and moves many common function declarations from
      window-specific headers to frame.h.  It introduces a new TERM_HEADER
      macro in config.h: we set this macro to the right header to use for
      the window system for which we're compiling Emacs and have source
      files include it indirectly.  This way, we don't have to teach every
      file about every window system.
      17a2cbbd
  32. 15 Aug, 2012 1 commit
    • Chong Yidong's avatar
      Extract better font information from the GTK >= 3.2 font chooser. · f2045622
      Chong Yidong authored
      * gtkutil.c (xg_get_font): Rename from xg_get_font_name.  When
      using the new font chooser, use gtk_font_chooser_get_font_desc to
      extract the font descriptor instead of just the font name.  In
      that case, return a font spec instead of a string.
      (x_last_font_name): Move to this file from xfns.c.
      
      * xfns.c (Fx_select_font): The return value can also be a font
      spec.  Move x_last_font_name management to gtkutil.c.
      
      * xfaces.c: Make font weight and style symbols non-static.
      
      * lisp/frame.el (set-frame-font): Accept font objects.
      f2045622
  33. 16 Jul, 2012 1 commit
  34. 11 Jan, 2012 1 commit
  35. 05 Jan, 2012 1 commit
  36. 27 Nov, 2011 1 commit