summaryrefslogtreecommitdiffstats
path: root/WebKitTools/MiniBrowser/win/BrowserWindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKitTools/MiniBrowser/win/BrowserWindow.cpp')
-rw-r--r--WebKitTools/MiniBrowser/win/BrowserWindow.cpp261
1 files changed, 0 insertions, 261 deletions
diff --git a/WebKitTools/MiniBrowser/win/BrowserWindow.cpp b/WebKitTools/MiniBrowser/win/BrowserWindow.cpp
deleted file mode 100644
index dc43a68..0000000
--- a/WebKitTools/MiniBrowser/win/BrowserWindow.cpp
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "StdAfx.h"
-#include "BrowserWindow.h"
-#include "MiniBrowser.h"
-#include "Resource.h"
-
-#include <assert.h>
-#include <commctrl.h>
-#include <shlwapi.h>
-#include <vector>
-#include <wininet.h>
-
-using namespace std;
-
-BrowserWindow::BrowserWindow()
- : m_window(0)
- , m_rebarWindow(0)
- , m_comboBoxWindow(0)
-{
-}
-
-LRESULT CALLBACK BrowserWindow::BrowserWindowWndProc(HWND window, UINT message, WPARAM wParam, LPARAM lParam)
-{
- LONG_PTR longPtr = ::GetWindowLongPtr(window, 0);
-
- if (BrowserWindow* browserView = reinterpret_cast<BrowserWindow*>(longPtr))
- return browserView->wndProc(window, message, wParam, lParam);
-
- if (message == WM_CREATE) {
- LPCREATESTRUCT createStruct = reinterpret_cast<LPCREATESTRUCT>(lParam);
- BrowserWindow* browserWindow = static_cast<BrowserWindow*>(createStruct->lpCreateParams);
- browserWindow->m_window = window;
-
- ::SetWindowLongPtr(window, 0, (LONG_PTR)browserWindow);
-
- browserWindow->onCreate(createStruct);
- return 0;
- }
-
- return ::DefWindowProc(window, message, wParam, lParam);
-}
-
-LRESULT BrowserWindow::wndProc(HWND window, UINT message, WPARAM wParam, LPARAM lParam)
-{
- LRESULT lResult = 0;
- bool handled = true;
-
- switch (message) {
- case WM_ERASEBKGND:
- lResult = 1;
- break;
-
- case WM_COMMAND:
- lResult = onCommand(LOWORD(wParam), handled);
- break;
-
- case WM_SIZE:
- onSize(LOWORD(lParam), HIWORD(lParam));
- break;
-
- case WM_DESTROY:
- onDestroy();
- break;
-
- case WM_NCDESTROY:
- onNCDestroy();
- break;
-
- default:
- handled = false;
- }
-
- if (!handled)
- lResult = ::DefWindowProc(window, message, wParam, lParam);
-
- return lResult;
-}
-
-void BrowserWindow::createWindow(int x, int y, int width, int height)
-{
- assert(!m_window);
-
- // Register the class.
- WNDCLASSEX windowClass = { 0 };
- windowClass.cbSize = sizeof(windowClass);
- windowClass.style = 0;
- windowClass.lpfnWndProc = BrowserWindowWndProc;
- windowClass.cbClsExtra = 0;
- windowClass.cbWndExtra = sizeof(this);
- windowClass.hInstance = MiniBrowser::shared().instance();
- windowClass.hIcon = 0;
- windowClass.hCursor = ::LoadCursor(0, IDC_ARROW);
- windowClass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);
- windowClass.lpszMenuName = MAKEINTRESOURCE(IDR_MAINFRAME);
- windowClass.lpszClassName = L"MiniBrowser";
- windowClass.hIconSm = 0;
-
- ::RegisterClassEx(&windowClass);
-
- ::CreateWindowW(L"MiniBrowser", L"MiniBrowser", WS_OVERLAPPEDWINDOW, x, y, width, height, 0, 0, MiniBrowser::shared().instance(), this);
-}
-
-void BrowserWindow::showWindow()
-{
- assert(m_window);
-
- ::ShowWindow(m_window, SW_SHOWNORMAL);
-}
-
-void BrowserWindow::goToURL(const std::wstring& url)
-{
- m_browserView.goToURL(url);
-}
-
-void BrowserWindow::onCreate(LPCREATESTRUCT createStruct)
-{
- // Register our window.
- MiniBrowser::shared().registerWindow(this);
-
- // Create the rebar control.
- m_rebarWindow = ::CreateWindowEx(0, REBARCLASSNAME, 0, WS_VISIBLE | WS_BORDER | WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | CCS_NODIVIDER | CCS_NOPARENTALIGN | RBS_VARHEIGHT | RBS_BANDBORDERS,
- 0, 0, 0, 0, m_window, 0, createStruct->hInstance, 0);
- REBARINFO rebarInfo = { 0 };
- rebarInfo.cbSize = sizeof(rebarInfo);
- rebarInfo.fMask = 0;
- ::SendMessage(m_rebarWindow, RB_SETBARINFO, 0, (LPARAM)&rebarInfo);
-
- // Create the combo box control.
- m_comboBoxWindow = ::CreateWindowEx(0, L"combobox", 0, WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_VSCROLL | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | CBS_AUTOHSCROLL | CBS_DROPDOWN,
- 0, 0, 0, 0, m_rebarWindow, 0, createStruct->hInstance, 0);
- SendMessage(m_comboBoxWindow, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));
-
- REBARBANDINFO bandInfo;
- bandInfo.cbSize = sizeof(bandInfo);
- bandInfo.fMask = RBBIM_STYLE | RBBIM_TEXT | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE;
- bandInfo.fStyle = RBBS_CHILDEDGE | RBBS_GRIPPERALWAYS;
- bandInfo.lpText = L"Address";
- bandInfo.hwndChild = m_comboBoxWindow;
-
- RECT comboBoxRect;
- ::GetWindowRect(m_comboBoxWindow, &comboBoxRect);
- bandInfo.cx = 100;
- bandInfo.cxMinChild = comboBoxRect.right - comboBoxRect.left;
- bandInfo.cyMinChild = comboBoxRect.bottom - comboBoxRect.top;
-
- // Add the band to the rebar.
- int result = ::SendMessage(m_rebarWindow, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&bandInfo);
-
- // Create the browser view.
- RECT webViewRect = { 0, 0, 0, 0};
- m_browserView.create(webViewRect, this);
-}
-
-void BrowserWindow::onDestroy()
-{
- MiniBrowser::shared().unregisterWindow(this);
-
- // FIXME: Should we close the browser view here?
-}
-
-void BrowserWindow::onNCDestroy()
-{
- delete this;
-}
-
-void BrowserWindow::onSize(int width, int height)
-{
- RECT rebarRect;
- ::GetClientRect(m_rebarWindow, &rebarRect);
-
- // Resize the rebar.
- ::MoveWindow(m_rebarWindow, 0, 0, width, rebarRect.bottom - rebarRect.top, true);
-
- RECT webViewRect;
- webViewRect.top = rebarRect.bottom;
- webViewRect.left = 0;
- webViewRect.right = width;
- webViewRect.bottom = height;
- m_browserView.setFrame(webViewRect);
-}
-
-LRESULT BrowserWindow::onCommand(int commandID, bool& handled)
-{
- switch (commandID) {
- case ID_FILE_NEW_WINDOW:
- MiniBrowser::shared().createNewWindow();
- break;
- case ID_FILE_CLOSE:
- ::PostMessage(m_window, WM_CLOSE, 0, 0);
- break;
- case ID_DEBUG_SHOW_WEB_VIEW: {
- HMENU menu = ::GetMenu(m_window);
- bool shouldHide = ::GetMenuState(menu, ID_DEBUG_SHOW_WEB_VIEW, MF_BYCOMMAND) & MF_CHECKED;
-
- ::CheckMenuItem(menu, ID_DEBUG_SHOW_WEB_VIEW, MF_BYCOMMAND | (shouldHide ? MF_UNCHECKED : MF_CHECKED));
-
- // Show or hide the web view.
- HWND webViewWindow = WKViewGetWindow(m_browserView.webView());
- ::ShowWindow(webViewWindow, shouldHide ? SW_HIDE : SW_SHOW);
- break;
- }
- default:
- handled = false;
- }
-
- return 0;
-}
-
-bool BrowserWindow::handleMessage(const MSG* message)
-{
- if (message->hwnd != m_comboBoxWindow && !::IsChild(m_comboBoxWindow, message->hwnd))
- return false;
-
- // Look for a WM_KEYDOWN message.
- if (message->message != WM_KEYDOWN)
- return false;
-
- // Look for the VK_RETURN key.
- if (message->wParam != VK_RETURN)
- return false;
-
- std::vector<WCHAR> buffer;
- int textLength = ::GetWindowTextLength(m_comboBoxWindow);
-
- buffer.resize(textLength + 1);
- ::GetWindowText(m_comboBoxWindow, &buffer[0], buffer.size());
-
- std::wstring url(&buffer[0], buffer.size() - 1);
-
- if (url.find(L"http://"))
- url = L"http://" + url;
-
- m_browserView.goToURL(url);
-
- // We handled this message.
- return true;
-}