[haiku-webkit-commits] r229 - webkit/trunk/WebKit/haiku/HaikuLauncher

  • From: webkit@xxxxxxxxxxxxxxx
  • To: haiku-webkit-commits@xxxxxxxxxxxxx
  • Date: Fri, 26 Feb 2010 23:17:52 +0000

Author: stippi
Date: Fri Feb 26 23:17:51 2010
New Revision: 229
URL: http://mmlr.dyndns.org/changeset/229

Log:
* Added small symbol buttons to tab container view. Currently only "New tab" is
  added and works.
* Added "Open location" shortcut Cmd-L as in Firefox.
* Moved "Show downloads" shortcut to Cmd-J, again as in Firefox. It uses Cmd-D
  for "Bookmark this page". Though I have no idea why we simply shouldn't use
  Cmd-D for Downloads and Cmd-B for Bookmark this page.

Modified:
   webkit/trunk/WebKit/haiku/HaikuLauncher/LauncherWindow.cpp
   webkit/trunk/WebKit/haiku/HaikuLauncher/WebTabView.cpp
   webkit/trunk/WebKit/haiku/HaikuLauncher/WebTabView.h

Modified: webkit/trunk/WebKit/haiku/HaikuLauncher/LauncherWindow.cpp
==============================================================================
--- webkit/trunk/WebKit/haiku/HaikuLauncher/LauncherWindow.cpp  Fri Feb 26 
19:02:24 2010        (r228)
+++ webkit/trunk/WebKit/haiku/HaikuLauncher/LauncherWindow.cpp  Fri Feb 26 
23:17:51 2010        (r229)
@@ -62,6 +62,7 @@
 #include <stdio.h>
 
 enum {
+       OPEN_LOCATION = 'open',
     GO_BACK = 'goba',
     GO_FORWARD = 'gofo',
     STOP = 'stop',
@@ -95,7 +96,11 @@
         B_AUTO_UPDATE_SIZE_LIMITS | B_ASYNCHRONOUS_CONTROLS)
     , m_downloadListener(downloadListener)
 {
-    m_tabManager = new TabManager(BMessenger(this));
+    BMessage* newTabMessage = new BMessage(NEW_TAB);
+    newTabMessage->AddString("url", "");
+    newTabMessage->AddPointer("window", this);
+    newTabMessage->AddBool("select", true);
+    m_tabManager = new TabManager(BMessenger(this), newTabMessage);
 
     if (toolbarPolicy == HaveToolbar) {
         // Menu
@@ -106,18 +111,15 @@
         BMenuItem* newItem = new BMenuItem("New window", newWindowMessage, 
'N');
         menu->AddItem(newItem);
         newItem->SetTarget(be_app);
-        BMessage* newTabMessage = new BMessage(NEW_TAB);
-        newTabMessage->AddString("url", "");
-        newTabMessage->AddPointer("window", this);
-        newTabMessage->AddBool("select", true);
-        newItem = new BMenuItem("New tab", newTabMessage, 'T');
+        newItem = new BMenuItem("New tab", new BMessage(*newTabMessage), 'T');
         menu->AddItem(newItem);
         newItem->SetTarget(be_app);
+        menu->AddItem(new BMenuItem("Open location", new 
BMessage(OPEN_LOCATION), 'L'));
         menu->AddSeparatorItem();
         menu->AddItem(new BMenuItem("Close window", new 
BMessage(B_QUIT_REQUESTED), 'W', B_SHIFT_KEY));
         menu->AddItem(new BMenuItem("Close tab", new BMessage(CLOSE_TAB), 
'W'));
         menu->AddSeparatorItem();
-        menu->AddItem(new BMenuItem("Show downloads", new 
BMessage(SHOW_DOWNLOAD_WINDOW), 'D'));
+        menu->AddItem(new BMenuItem("Show downloads", new 
BMessage(SHOW_DOWNLOAD_WINDOW), 'J'));
         menu->AddSeparatorItem();
         BMenuItem* quitItem = new BMenuItem("Quit", new 
BMessage(B_QUIT_REQUESTED), 'Q');
         menu->AddItem(quitItem);
@@ -253,6 +255,14 @@
 void LauncherWindow::MessageReceived(BMessage* message)
 {
     switch (message->what) {
+    case OPEN_LOCATION:
+        if (m_url) {
+               if (m_url->TextView()->IsFocus())
+                   m_url->TextView()->SelectAll();
+               else
+                   m_url->MakeFocus(true);
+        }
+       break;
     case RELOAD:
         CurrentWebView()->LoadURL(m_url->Text());
         break;

Modified: webkit/trunk/WebKit/haiku/HaikuLauncher/WebTabView.cpp
==============================================================================
--- webkit/trunk/WebKit/haiku/HaikuLauncher/WebTabView.cpp      Fri Feb 26 
19:02:24 2010        (r228)
+++ webkit/trunk/WebKit/haiku/HaikuLauncher/WebTabView.cpp      Fri Feb 26 
23:17:51 2010        (r229)
@@ -29,7 +29,9 @@
 #include "WebTabView.h"
 
 #include "WebView.h"
+#include <Application.h>
 #include <AbstractLayoutItem.h>
+#include <Button.h>
 #include <CardLayout.h>
 #include <ControlLook.h>
 #include <GroupView.h>
@@ -884,11 +886,149 @@
 }
 
 
+// #pragma mark - TabButton
+
+
+class TabButton : public BButton {
+public:
+       TabButton(BMessage* message)
+               : BButton("", message)
+       {
+       }
+
+       virtual BSize MinSize()
+       {
+               return BSize(12, 12);
+       }
+
+       virtual BSize MaxSize()
+       {
+               return BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED);
+       }
+
+       virtual BSize PreferredSize()
+       {
+               return MinSize();
+       }
+
+       virtual void Draw(BRect updateRect)
+       {
+               BRect bounds(Bounds());
+               rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR);
+               SetHighColor(tint_color(base, B_DARKEN_2_TINT));
+               StrokeLine(bounds.LeftBottom(), bounds.RightBottom());
+               bounds.bottom--;
+               uint32 flags = be_control_look->Flags(this);
+               uint32 borders = BControlLook::B_TOP_BORDER
+                       | BControlLook::B_BOTTOM_BORDER;
+               be_control_look->DrawInactiveTab(this, bounds, updateRect, base,
+                       flags, borders);
+               if (IsEnabled()) {
+                       rgb_color button = tint_color(base, 1.07);
+                       be_control_look->DrawButtonBackground(this, bounds, 
updateRect,
+                               button, flags, 0);
+               }
+
+               bounds.left = (bounds.left + bounds.right) / 2 - 6;
+               bounds.top = (bounds.top + bounds.bottom) / 2 - 6;
+               bounds.right = bounds.left + 12;
+               bounds.bottom = bounds.top + 12;
+               DrawSymbol(bounds, updateRect, base);
+       }
+
+       virtual void DrawSymbol(BRect frame, const BRect& updateRect,
+               const rgb_color& base)
+       {
+       }
+};
+
+
+class ScrollLeftTabButton : public TabButton {
+public:
+       ScrollLeftTabButton(BMessage* message)
+               : TabButton(message)
+       {
+       }
+
+       virtual void DrawSymbol(BRect frame, const BRect& updateRect,
+               const rgb_color& base)
+       {
+               be_control_look->DrawArrowShape(this, frame, updateRect,
+                       base, BControlLook::B_LEFT_ARROW, 0, B_DARKEN_4_TINT);
+       }
+};
+
+
+class ScrollRightTabButton : public TabButton {
+public:
+       ScrollRightTabButton(BMessage* message)
+               : TabButton(message)
+       {
+       }
+
+       virtual void DrawSymbol(BRect frame, const BRect& updateRect,
+               const rgb_color& base)
+       {
+               be_control_look->DrawArrowShape(this, frame, updateRect,
+                       base, BControlLook::B_RIGHT_ARROW, 0, B_DARKEN_4_TINT);
+       }
+};
+
+
+class NewTabButton : public TabButton {
+public:
+       NewTabButton(BMessage* message)
+               : TabButton(message)
+       {
+       }
+
+       virtual BSize MinSize()
+       {
+               return BSize(18, 12);
+       }
+
+       virtual void DrawSymbol(BRect frame, const BRect& updateRect,
+               const rgb_color& base)
+       {
+               SetHighColor(tint_color(base, B_DARKEN_4_TINT));
+               float inset = 3;
+               frame.InsetBy(2, 2);
+               frame.top++;
+               frame.left++;
+               FillRoundRect(BRect(frame.left, frame.top + inset,
+                       frame.right, frame.bottom - inset), 1, 1);
+               FillRoundRect(BRect(frame.left + inset, frame.top,
+                       frame.right - inset, frame.bottom), 1, 1);
+       }
+};
+
+
+class TabMenuTabButton : public TabButton {
+public:
+       TabMenuTabButton(BMessage* message)
+               : TabButton(message)
+       {
+       }
+
+       virtual BSize MinSize()
+       {
+               return BSize(18, 12);
+       }
+
+       virtual void DrawSymbol(BRect frame, const BRect& updateRect,
+               const rgb_color& base)
+       {
+               be_control_look->DrawArrowShape(this, frame, updateRect,
+                       base, BControlLook::B_DOWN_ARROW, 0, B_DARKEN_4_TINT);
+       }
+};
+
+
 // #pragma mark - TabManager
 
 
 
-TabManager::TabManager(const BMessenger& target)
+TabManager::TabManager(const BMessenger& target, BMessage* newTabMessage)
     :
     fTarget(target)
 {
@@ -900,6 +1040,12 @@
        fTabContainerGroup = new BGroupView(B_HORIZONTAL);
        fTabContainerGroup->GroupLayout()->SetInsets(0, 5, 0, 0);
        fTabContainerGroup->GroupLayout()->AddView(fTabContainerView);
+//     fTabContainerGroup->GroupLayout()->AddView(new 
ScrollLeftTabButton(NULL), 0.0f);
+//     fTabContainerGroup->GroupLayout()->AddView(new 
ScrollRightTabButton(NULL), 0.0f);
+       NewTabButton* newTabButton = new NewTabButton(newTabMessage);
+       newTabButton->SetTarget(be_app);
+       fTabContainerGroup->GroupLayout()->AddView(newTabButton, 0.0f);
+//     fTabContainerGroup->GroupLayout()->AddView(new TabMenuTabButton(NULL), 
0.0f);
 }
 
 

Modified: webkit/trunk/WebKit/haiku/HaikuLauncher/WebTabView.h
==============================================================================
--- webkit/trunk/WebKit/haiku/HaikuLauncher/WebTabView.h        Fri Feb 26 
19:02:24 2010        (r228)
+++ webkit/trunk/WebKit/haiku/HaikuLauncher/WebTabView.h        Fri Feb 26 
23:17:51 2010        (r229)
@@ -42,7 +42,8 @@
 
 class TabManager {
 public:
-                                                       TabManager(const 
BMessenger& target);
+                                                       TabManager(const 
BMessenger& target,
+                                                               BMessage* 
newTabMessage);
        virtual                                         ~TabManager();
 
                        void                            SetTarget(const 
BMessenger& target);

Other related posts: