diff options
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/frames.c | 95 | 
1 files changed, 95 insertions, 0 deletions
| diff --git a/src/ui/frames.c b/src/ui/frames.c index 19c14c56..1d45a38a 100644 --- a/src/ui/frames.c +++ b/src/ui/frames.c @@ -1576,6 +1576,71 @@ meta_frame_titlebar_event (MetaUIFrame    *frame,                                    event->time);        break; +    case META_ACTION_TITLEBAR_CLOSE: +      meta_core_delete (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), +                        frame->xwindow, +                        event->time); +      break; + +    case META_ACTION_TITLEBAR_RAISE: +      meta_core_user_raise (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), +                            frame->xwindow); +      break; + +    case META_ACTION_TITLEBAR_SHADE: +      meta_core_get (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), frame->xwindow, +                     META_CORE_GET_FRAME_FLAGS, &flags, +                     META_CORE_GET_END); +      if ((flags & META_FRAME_ALLOWS_SHADE) && !(flags & META_FRAME_SHADED)) +        { +          meta_core_shade (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), +                           frame->xwindow, +                           event->time); +        } +      break; + +    case META_ACTION_TITLEBAR_UNSHADE: +      meta_core_get (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), frame->xwindow, +                     META_CORE_GET_FRAME_FLAGS, &flags, +                     META_CORE_GET_END); +      if ((flags & META_FRAME_ALLOWS_SHADE) && (flags & META_FRAME_SHADED)) +        { +          meta_core_unshade (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), +                             frame->xwindow, +                             event->time); +        } +      break; + +    case META_ACTION_TITLEBAR_TOGGLE_STICK: +      { +        MetaFrameFlags flags; +        meta_core_get (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), frame->xwindow, +                       META_CORE_GET_FRAME_FLAGS, &flags, +                       META_CORE_GET_END); +        if (flags & META_FRAME_STUCK) +          meta_core_unstick (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), +                             frame->xwindow); +        else +          meta_core_stick (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), +                           frame->xwindow); +      } +      break; + +    case META_ACTION_TITLEBAR_TOGGLE_ABOVE: +      { +        MetaFrameFlags flags; +        meta_core_get (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), frame->xwindow, +                       META_CORE_GET_FRAME_FLAGS, &flags, +                       META_CORE_GET_END); +        if (flags & META_FRAME_ABOVE) +          meta_core_unmake_above (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), +                                  frame->xwindow); +        else +          meta_core_make_above (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), +                                frame->xwindow); +      } +      break; +      case META_ACTION_TITLEBAR_LAST:        break;      } @@ -1611,6 +1676,24 @@ meta_frame_right_click_event(MetaUIFrame     *frame,  }  static gboolean +meta_frame_scroll_up_event (MetaUIFrame    *frame, +                            GdkEventButton *event) +{ +  int action = meta_prefs_get_action_scroll_up_titlebar(); + +  return meta_frame_titlebar_event (frame, event, action); +} + +static gboolean +meta_frame_scroll_down_event (MetaUIFrame    *frame, +                              GdkEventButton *event) +{ +  int action = meta_prefs_get_action_scroll_down_titlebar(); + +  return meta_frame_titlebar_event (frame, event, action); +} + +static gboolean  meta_frames_button_press_event (GtkWidget      *widget,                                  GdkEventButton *event)  { @@ -1851,6 +1934,18 @@ meta_frames_button_press_event (GtkWidget      *widget,      {        return meta_frame_right_click_event (frame, event);      } +  else if (event->button == 4)  /* scroll up */ +    { +      /* Only handle scroll on titlebar, not on other frame controls */ +      if (control == META_FRAME_CONTROL_TITLE) +        return meta_frame_scroll_up_event (frame, event); +    } +  else if (event->button == 5)  /* scroll down */ +    { +      /* Only handle scroll on titlebar, not on other frame controls */ +      if (control == META_FRAME_CONTROL_TITLE) +        return meta_frame_scroll_down_event (frame, event); +    }    return TRUE;  } | 
