diff --git a/app/views/search/globalsearch/index.php b/app/views/search/globalsearch/index.php
index 637873e20bf4a76f70226caa2ab9d8727d4dbf30..d0846e90e915a4d9547778d11ae42ff2b02fe3c7 100644
--- a/app/views/search/globalsearch/index.php
+++ b/app/views/search/globalsearch/index.php
@@ -5,14 +5,14 @@
             placeholder="<?= _('Was suchen Sie?') ?>">
 
         <span class="input-group-append">
-            <button type="submit" class="button" id="search-btn">
-                <?= Icon::create('search')->asImg(['title' => _('Suche starten')]) ?>
-            </button>
-
             <button type="submit" class="button" id="reset-search">
                 <?= Icon::create('decline')->asImg(['title' => _('Suche zurücksetzen')]) ?>
             </button>
 
+            <button type="submit" class="button" id="search-btn">
+                <?= Icon::create('search')->asImg(['title' => _('Suche starten')]) ?>
+            </button>
+
         </span>
     </div>
 </form>
diff --git a/lib/classes/sidebar/SearchWidget.php b/lib/classes/sidebar/SearchWidget.php
index f7dcdc184534910214e0a11b78f6a689ea92e979..71677fb3ae4e3af58ccf936077f9db00cb3e3f71 100644
--- a/lib/classes/sidebar/SearchWidget.php
+++ b/lib/classes/sidebar/SearchWidget.php
@@ -145,15 +145,20 @@ class SearchWidget extends SidebarWidget
             $reset_params = $query_params;
             foreach ($this->needles as $needle) {
                 unset($reset_params[$needle['name']]);
+
+                // Search view in Wiki must be cleared.
+                if ($reset_params['view'] == 'search') {
+                    $reset_params['view'] = 'show';
+                }
+                // Search view in Forum must be cleared.
+                if ($reset_params['backend'] == 'search') {
+                    unset($reset_params['backend']);
+                    $this->url = str_replace('index/search', 'index', $this->url);
+                }
             }
 
-            $reset_link = sprintf(
-                '<a href="%s">%s %s</a>',
-                URLHelper::getLink($this->url, array_merge($reset_params, ['reset-search' => 1])),
-                Icon::create('decline')->asImg(['class' => 'text-top']),
-                _('Zurücksetzen')
-            );
-            $this->template_variables['reset_search'] = $reset_link;
+            $reset_link = URLHelper::getLink($this->url, array_merge($reset_params, ['reset-search' => 1]));
+            $this->template_variables['reset_link'] = $reset_link;
         }
 
         $this->template_variables['needles'] = $this->needles;
diff --git a/resources/assets/stylesheets/scss/search.scss b/resources/assets/stylesheets/scss/search.scss
index 5b7107ea39e68b9f9ad76b240946f6482883e2b5..8d6b37046de05f62308c38cc7a8891bdca82a797 100644
--- a/resources/assets/stylesheets/scss/search.scss
+++ b/resources/assets/stylesheets/scss/search.scss
@@ -191,8 +191,10 @@ div#div-search-input {
 
     // visual adjustments for the reset button
     button#reset-search {
-        background-color: transparent;
-        border: 0;
+        background-color: $white;
+        border-bottom: 1px solid $light-gray-color-40;
+        border-top: 1px solid $light-gray-color-40;
+        margin-left: -1px;
         padding-left: 10px;
     }
 
diff --git a/resources/assets/stylesheets/scss/sidebar.scss b/resources/assets/stylesheets/scss/sidebar.scss
index 0b9393380dbc433c75c6c217005ff4c4d3ad8abf..a520f3bfa4b25fbbb9fd68e4d5733cf3a79e66df 100644
--- a/resources/assets/stylesheets/scss/sidebar.scss
+++ b/resources/assets/stylesheets/scss/sidebar.scss
@@ -298,45 +298,58 @@ select.sidebar-selectlist {
 }
 
 .sidebar-search {
-    .needles input[type=text] {
-        box-sizing: border-box;
-        border: 1px solid $base-color-60;
-        border-right-width: 30px;
-        float: left;
-        height: 22px;
-        width: 100%;
-    }
-    input[type=submit] {
-        font: 0/0 a;
-        color: transparent;
-        text-shadow: none;
-        background-color: transparent;
-        border: 0;
-
-        // Activate when twitter-mixins is included as scss and remove the above rules
-        // @include hide-text();
-
-        width: 29px;
-        height: 20px;
-        @include background-icon(search, info_alt);
-        float: left;
-        background-position: center 3px;
-        background-repeat: no-repeat;
-        vertical-align: top;
-        margin-left: -30px;
-    }
-    ul.needles {
+    .needles {
         list-style: none;
         margin: 0;
         padding: 0;
+
         li {
-            @include clearfix();
+            display: flex;
             margin-bottom: 0.5em;
+
             &:last-child {
                 margin-bottom: 0;
             }
+
+            .input-group {
+                margin-bottom: 0;
+                margin-top: 0;
+
+                input[type=text] {
+                    box-sizing: border-box;
+                    border: 1px solid $base-color-60;
+                    border-right: none;
+                    flex: 1;
+                    padding: .375rem .75rem;
+                    width: 100%;
+                }
+
+                button {
+                    background-color: $content-color-20;
+                    border: 1px solid $base-color-60;
+                    border-left-color: $light-gray-color-40;
+                    border-radius: 0;
+                    color: transparent;
+                    cursor: pointer;
+                    font: 0/0 a;
+                    height: 30px;
+                    text-shadow: none;
+                }
+
+                .reset-search {
+                    border: 1px solid $base-color-60;
+                    border-left: 0;
+                    border-right: 0;
+                    display: inline-block;
+                    padding-right: 5px;
+                    padding-top: 4px;
+                    cursor: pointer;
+                }
+
+            }
         }
     }
+
     ul.filters {
         list-style: none;
         margin: 0;
diff --git a/resources/vue/components/courseware/CoursewareSearchWidget.vue b/resources/vue/components/courseware/CoursewareSearchWidget.vue
index c8445f926e11b5edd8d362007ca14eec8111cbed..99826a42f7de4c94d4263ade1e6e216a102dc82b 100644
--- a/resources/vue/components/courseware/CoursewareSearchWidget.vue
+++ b/resources/vue/components/courseware/CoursewareSearchWidget.vue
@@ -2,19 +2,25 @@
   <form class="sidebar-search" @submit.prevent="">
       <ul class="needles">
           <li>
-              <form @submit.prevent="">
-                <input
-                    type="text"
-                    v-model="searchTerm"
-                    :aria-label="$gettext('Geben Sie einen Suchbegriff mit mindestens 3 Zeichen ein.')"
-                />
-                <input
-                    type="submit"
-                    :value="$gettext('Suchen')"
-                    aria-controls="search"
-                    @click="loadResults"
-                />
-              </form>
+              <div class="input-group files-search">
+                  <input
+                      type="text"
+                      v-model="searchTerm"
+                      :aria-label="$gettext('Geben Sie einen Suchbegriff mit mindestens 3 Zeichen ein.')"
+                  />
+                  <a v-if="searched" @click.prevent="setShowSearchResults(false)" class="reset-search">
+                      <studip-icon shape="decline" size="20"></studip-icon>
+                  </a>
+                  <button
+                      type="submit"
+                      :value="$gettext('Suchen')"
+                      aria-controls="search"
+                      class="submit-search"
+                      @click="loadResults"
+                  >
+                      <studip-icon shape="search" size="20"></studip-icon>
+                  </button>
+              </div>
           </li>
       </ul>
   </form>
@@ -23,12 +29,14 @@
 <script>
 import axios from 'axios';
 import { mapActions, mapGetters } from 'vuex';
+import StudipIcon from '../StudipIcon.vue';
 
 export default {
     name: 'courseware-search-widget',
+    components: { StudipIcon },
     data() {
         return {
-            searchTerm: '',
+            searchTerm: ''
         }
     },
     computed: {
@@ -36,6 +44,9 @@ export default {
             courseware: 'courseware',
             context: 'context',
         }),
+        searched() {
+            return this.$store.state.courseware.showSearchResults
+        }
     },
     methods: {
         ...mapActions({
@@ -70,7 +81,7 @@ export default {
             });
         }
     }
-    
+
 
 }
 </script>
diff --git a/templates/sidebar/search-widget.php b/templates/sidebar/search-widget.php
index 597e574154f8d4eb770fe435221947e1f70730db..df4a1dd1a07c43f465ae83a35b21f328160c5fcb 100644
--- a/templates/sidebar/search-widget.php
+++ b/templates/sidebar/search-widget.php
@@ -1,8 +1,3 @@
-<? if ($reset_search): ?>
-<div style="text-align: right;">
-    <?= $reset_search ?>
-</div>
-<? endif; ?>
 <form action="<?= URLHelper::getLink($url) ?>" method="<?= $method ?>" <? if (isset($id)) printf('id="%s"', htmlReady($id)); ?> class="sidebar-search">
 <? foreach ($url_params as $key => $value): ?>
     <?=addHiddenFields($key,$value)?>
@@ -10,19 +5,29 @@
     <ul class="needles">
     <? foreach ($needles as $needle): ?>
         <li <? if ($needle['quick_search'] && $needle['quick_search']->hasExtendedLayout()) echo 'class="extendedLayout" id="' . $needle['quick_search']->getId() . '_frame"'; ?>>
-            <label for="needle-<?= $hash = md5($url . '|' . $needle['name']) ?>" <? if ($needle['placeholder']) echo 'style="display:none;"'; ?>>
-                <?= htmlReady($needle['label']) ?>
-            </label>
-        <? if ($needle['quick_search']): ?>
-            <?= $needle['quick_search']->render() ?>
-        <? else: ?>
-            <input type="text" id="needle-<?= $hash ?>"
-                   name="<?= htmlReady($needle['name']) ?>"
-                   value="<?= htmlReady($needle['value']) ?>"
-                   <? if ($needle['placeholder']) printf('placeholder="%s"', htmlReady($needle['label'])); ?>
-                   <?= arrayToHtmlAttributes($needle['attributes']) ?>>
-        <? endif; ?>
-            <input type="submit" value="<?= _('Suchen') ?>">
+            <div class="input-group files-search">
+                <label for="needle-<?= $hash = md5($url . '|' . $needle['name']) ?>" <? if ($needle['placeholder']) echo 'style="display:none;"'; ?>>
+                    <?= htmlReady($needle['label']) ?>
+                </label>
+                <? if ($needle['quick_search']): ?>
+                    <?= $needle['quick_search']->render() ?>
+                <? else: ?>
+                <input type="text" id="needle-<?= $hash ?>"
+                       name="<?= htmlReady($needle['name']) ?>"
+                       value="<?= htmlReady($needle['value']) ?>"
+                       <? if ($needle['placeholder']) printf('placeholder="%s"', htmlReady($needle['label'])); ?>
+                       <?= arrayToHtmlAttributes($needle['attributes']) ?>>
+                <? endif; ?>
+                <? if ($reset_link): ?>
+                    <a class="reset-search" href="<?= $reset_link ?>" tabindex="0"
+                       title="<?= _('Suche zurücksetzen') ?>">
+                        <?= Icon::create('decline')->asImg(20) ?>
+                    </a>
+                <? endif; ?>
+                <button type="submit" class="submit-search<?= $reset_link ? ' is-executed' : '' ?>"
+                        title="<?= _('Suche ausführen') ?>">
+                    <?= Icon::create('search')->asImg(20) ?>
+                </button>
         </li>
     <? endforeach; ?>
     </ul>