[haiku-webkit-commits] r482 - webkit/trunk/WebKit/haiku/WebPositive

  • From: webkit@xxxxxxxxxxxxxxx
  • To: haiku-webkit-commits@xxxxxxxxxxxxx
  • Date: Tue, 04 May 2010 12:23:56 +0000

Author: stippi
Date: Tue May  4 12:23:56 2010
New Revision: 482
URL: http://mmlr.dyndns.org/changeset/482

Log:
Implemented most basic fullscreen feature.

Modified:
   webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.cpp
   webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.h

Modified: webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.cpp
==============================================================================
--- webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.cpp     Tue May  4 
12:02:24 2010        (r481)
+++ webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.cpp     Tue May  4 
12:23:56 2010        (r482)
@@ -76,29 +76,31 @@
 
 
 enum {
-       OPEN_LOCATION = 'open',
-       GO_BACK = 'goba',
-       GO_FORWARD = 'gofo',
-       STOP = 'stop',
-       GOTO_URL = 'goul',
-       RELOAD = 'reld',
-       CLEAR_HISTORY = 'clhs',
-
-       CREATE_BOOKMARK = 'crbm',
-       SHOW_BOOKMARKS = 'shbm',
-
-       ZOOM_FACTOR_INCREASE = 'zfin',
-       ZOOM_FACTOR_DECREASE = 'zfdc',
-       ZOOM_FACTOR_RESET = 'zfrs',
-       ZOOM_TEXT_ONLY = 'zfto',
-
-       EDIT_SHOW_FIND_GROUP = 'sfnd',
-       EDIT_HIDE_FIND_GROUP = 'hfnd',
-       EDIT_FIND_NEXT = 'fndn',
-       EDIT_FIND_PREVIOUS = 'fndp',
-       FIND_TEXT_CHANGED = 'ftxt',
+       OPEN_LOCATION                           = 'open',
+       GO_BACK                                         = 'goba',
+       GO_FORWARD                                      = 'gofo',
+       STOP                                            = 'stop',
+       GOTO_URL                                        = 'goul',
+       RELOAD                                          = 'reld',
+       CLEAR_HISTORY                           = 'clhs',
+
+       CREATE_BOOKMARK                         = 'crbm',
+       SHOW_BOOKMARKS                          = 'shbm',
+
+       ZOOM_FACTOR_INCREASE            = 'zfin',
+       ZOOM_FACTOR_DECREASE            = 'zfdc',
+       ZOOM_FACTOR_RESET                       = 'zfrs',
+       ZOOM_TEXT_ONLY                          = 'zfto',
+
+       TOGGLE_FULLSCREEN                       = 'tgfs',
+
+       EDIT_SHOW_FIND_GROUP            = 'sfnd',
+       EDIT_HIDE_FIND_GROUP            = 'hfnd',
+       EDIT_FIND_NEXT                          = 'fndn',
+       EDIT_FIND_PREVIOUS                      = 'fndp',
+       FIND_TEXT_CHANGED                       = 'ftxt',
 
-       SELECT_TAB = 'sltb',
+       SELECT_TAB                                      = 'sltb',
 };
 
 
@@ -189,6 +191,7 @@
        BWebWindow(frame, kApplicationName,
                B_DOCUMENT_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL,
                B_AUTO_UPDATE_SIZE_LIMITS | B_ASYNCHRONOUS_CONTROLS),
+       fIsFullscreen(false),
        fAppSettings(appSettings),
        fZoomTextOnly(true),
        fShowTabsIfSinglePageOpen(true)
@@ -274,6 +277,12 @@
                new BMessage(ZOOM_TEXT_ONLY));
        fZoomTextOnlyMenuItem->SetMarked(fZoomTextOnly);
        menu->AddItem(fZoomTextOnlyMenuItem);
+
+       menu->AddSeparatorItem();
+       fFullscreenItem = new BMenuItem("Fullscreen",
+               new BMessage(TOGGLE_FULLSCREEN), B_RETURN);
+       menu->AddItem(fFullscreenItem);
+
        mainMenu->AddItem(menu);
 
        fHistoryMenu = new BMenu("History");
@@ -604,6 +613,10 @@
                        // already zoomed.
                        break;
 
+               case TOGGLE_FULLSCREEN:
+                       _ToggleFullscreen();
+                       break;
+
                case EDIT_FIND_NEXT:
                        CurrentWebView()->FindString(fFindTextControl->Text(), 
true,
                                fFindCaseSensitiveCheckBox->Value());
@@ -770,6 +783,29 @@
 }
 
 
+void
+BrowserWindow::Zoom(BPoint origin, float width, float height)
+{
+       _ToggleFullscreen();
+}
+
+
+void
+BrowserWindow::ScreenChanged(BRect screenSize, color_space format)
+{
+       if (fIsFullscreen)
+               _ResizeToScreen();
+}
+
+
+void
+BrowserWindow::WorkspacesChanged(uint32 oldWorkspaces, uint32 newWorkspaces)
+{
+       if (fIsFullscreen)
+               _ResizeToScreen();
+}
+
+
 static bool
 viewIsChild(const BView* parent, const BView* view)
 {
@@ -1693,3 +1729,35 @@
        }
        return true;
 }
+
+
+void
+BrowserWindow::_ToggleFullscreen()
+{
+       if (fIsFullscreen) {
+               MoveTo(fNonFullscreenWindowFrame.LeftTop());
+               ResizeTo(fNonFullscreenWindowFrame.Width(),
+                       fNonFullscreenWindowFrame.Height());
+
+               SetFlags(Flags() & ~(B_NOT_RESIZABLE | B_NOT_MOVABLE));
+               SetLook(B_DOCUMENT_WINDOW_LOOK);
+       } else {
+               fNonFullscreenWindowFrame = Frame();
+               _ResizeToScreen();
+
+               SetFlags(Flags() | (B_NOT_RESIZABLE | B_NOT_MOVABLE));
+               SetLook(B_TITLED_WINDOW_LOOK);
+       }
+       fIsFullscreen = !fIsFullscreen;
+       fFullscreenItem->SetMarked(fIsFullscreen);
+}
+
+
+void
+BrowserWindow::_ResizeToScreen()
+{
+       BScreen screen(this);
+       MoveTo(0, 0);
+       ResizeTo(screen.Frame().Width(), screen.Frame().Height());
+}
+

Modified: webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.h
==============================================================================
--- webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.h       Tue May  4 
12:02:24 2010        (r481)
+++ webkit/trunk/WebKit/haiku/WebPositive/BrowserWindow.h       Tue May  4 
12:23:56 2010        (r482)
@@ -90,6 +90,12 @@
        virtual bool                            QuitRequested();
        virtual void                            MenusBeginning();
 
+       virtual void                            Zoom(BPoint origin, float 
width, float height);
+       virtual void                            ScreenChanged(BRect screenSize,
+                                                                       
color_space format);
+       virtual void                            WorkspacesChanged(uint32 
oldWorkspaces,
+                                                                       uint32 
newWorkspaces);
+
        virtual void                            SetCurrentWebView(BWebView* 
view);
 
                        void                            CreateNewTab(const 
BString& url, bool select,
@@ -164,6 +170,9 @@
 
                        bool                            _ShowPage(BWebView* 
view);
 
+                       void                            _ToggleFullscreen();
+                       void                            _ResizeToScreen();
+
 private:
                        BMenu*                          fHistoryMenu;
                        int32                           
fHistoryMenuFixedItemCount;
@@ -174,6 +183,7 @@
                        BMenuItem*                      fFindPreviousMenuItem;
                        BMenuItem*                      fFindNextMenuItem;
                        BMenuItem*                      fZoomTextOnlyMenuItem;
+                       BMenuItem*                      fFullscreenItem;
                        BMenuItem*                      fBackMenuItem;
                        BMenuItem*                      fForwardMenuItem;
 
@@ -194,6 +204,9 @@
                        BCheckBox*                      
fFindCaseSensitiveCheckBox;
                        TabManager*                     fTabManager;
 
+                       bool                            fIsFullscreen;
+                       BRect                           
fNonFullscreenWindowFrame;
+
                        // cached settings
                        SettingsMessage*        fAppSettings;
                        bool                            fZoomTextOnly;

Other related posts:

  • » [haiku-webkit-commits] r482 - webkit/trunk/WebKit/haiku/WebPositive - webkit